\n in variabele javascript

Status
Niet open voor verdere reacties.

wouteronline55

Gebruiker
Lid geworden
29 dec 2005
Berichten
61
Ik zit met een vraag. Ik heb het volgende:

[JS]document.getElementById('idnaam').innerHTML = '<textarea name="text" class="class">'+var+'</textarea>';[/JS]

Dit is een onderdeel van een functie die ik oproep met:

HTML:
<a href="javascript:functie('var')" class="class">Link</a>

De inhoud van 'var' wordt door PHP daar weggezet en daarvoor direct uit de DB gehaald. De text is in de DB terecht gekomen via een textarea die eerder is ingevuld.

De tekst wordt netjes in de tekstarea weergeven, maar nu is het zo dat enters (\n \r) niet mee worden genomen. Op het moment dat ik $var direct in een textarea zet (dus zonder tussenkomst van javascript) dan werkt dit wel goed.

Hoe kan ik ervoor zorgen dat de enters mee worden genomen op het moment dat ik de javascript function oproep?
 
PHP heeft een
PHP:
nl2br();   // klik erop ;)
functie; in javascript kan je er zelf eentje bouwen,[JS]String.prototype.nl2br = function()
{
return this.replace("\n", "<br />");
};[/JS]en dan aanroepen als[JS]var str = "dit is een string \n met newlines";
alert(str.nl2br()); // "dit is een string <br /> met newlines"[/JS]:thumb:
 
Op dat moment komt er letterlijk <br> te staan in de <textarea>. En tevens ook niet op de volgende regel.
 
Wellicht moet je zorgen dat je de var tussen dubbele quotes zet, newlines tussen enkele quotes worden voor zover ik weet niet als zodanig geparsed.
 
Wellicht moet je zorgen dat je de var tussen dubbele quotes zet, newlines tussen enkele quotes worden voor zover ik weet niet als zodanig geparsed.

Ik heb dit geprobeerd, maar dat helpt niet. Ik heb wel de dubble quotes met &quot; moeten wegzetten, want letterlijk een " wegzetten wordt gezien als het einde van de link.

Dubbele quotes zijn dus niet het probleem. Iemand nog suggesties?
 
Oh, wacht even, ik heb de vraag verkeerd gelezen.

Het probleem is dat er blijkbaar iets fout gaat met de newlines. En, erger, newlines zijn onzichtbaar, dus dat kan vervelend worden.

Wat je kan doen is je 'var' ding even door zo'n functie halen:[JS]function wtfVar(str)
{
str = str.replace(/\n/g, "<NEWLINE>");
str = str.replace(/\r/g, "<RETURN>");

return str;
}[/JS]dan zie je eventjes waar precies wat staat.

Overgens denk ik dat je aan de php kant mischien zoiets moet doen:
PHP:
/* even door deze functie halen voordat je het aan javascript geeft */

function maakVeiligVoorJS($str)
{
   return str_replace("\n", "\\n", $str);
}


:thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan