Autor Zpráva
Ivan
Profil *
Ahoj, mám otázku.. Do proměnné posílám řetězce, které následně zobrazuji. Problém mám, když do proměnné zašlu řetězec obsahující html tagy. Jde mi konkrétně o to, že když zašlu tag <br>, řádek se mi nezalomí, ale vypíše se na obrazovku. prosím poraďte mi, jak docílim zalomení textu v obsahu proměnné. Napadlo mě doplnit proměnnou ještě o náhradu části řetězce '<br>' => '\n', ale nevím, jak toho v JS docílit jelikož v JS nejsem moc zběhlý, neznám na to funkci. Děkuji za pomoc
sysel
Profil
Ivan:
Do proměnné posílám řetězce
jak docílim zalomení textu v obsahu proměnné

Bude potřeba upřesnit, co odkud a kam se "posílá". Uvnitř proměnné text represntuje řetězec znaků - o zalomení a o tom , které znaky ho způsobí, rozhoduje způsob zobrazení.

Tedy v proměnné si můžu pro znak konce řádku (odstavce) použít jakýkoliv unikátní znak, popřípadě sequenci znaků. Hledání a náhrady znaků v řetězci se v JavaScriptu i jinde v programech nejlépe provádějí pomocí RegExpů. Velmi pěkný přehled je zde, a stručný výklad například tamhle.
Ivan
Profil *
Nevím zda to bude dostačující, ale mám JS kod takto:

promenna = document.createTextNode('První řádek<br>Druhý řádek'.replace(new RegExp('<br>','g'),'\n'));

ve výpisu textu se tag '<br>' zobrazuje, ale pro mě z neznámého důvodu se v HTML nezalamuje a zalomení řádku '\n' se nezobrazuje a rovněž jako '<br>' nezalamuje :((
sysel
Profil
Prosím, používejte vyznačení programového kódu příslušnými tlačítky |<>|.

Snažíte se vytvořit ne obyčejnou řetězcovou proměnnou, ale objekt TextNode DOMu. TextNode zřejmě z principu obsahuje pouze text a tag <br> ani žádný jiný se do něj vložit nedá. Rovněž pokusy o vložení nějakých 'lámacích' značek typu \n se zřejmě nezdaří, protože se prostě nezobrazí! Pro zobrazení zalomení je potřeba do textu vložit právě tag <br> a to Váš program nedělá.

Použití createTextNode mi připadá poněkud kostrbaté, radši bych si text připravil a vložil na určené místo pomocí objekt.innerHTML = textovyRetezec.

Zkusil jsem toto:
var neco0 = document.createTextNode('První řádek');
var neco1 = document.createElement('br');
var neco2 = document.createTextNode('druhy řádek');
    
document.body.appendChild(neco0);
document.body.appendChild(neco1) ;
document.body.appendChild(neco2) ; 

a to funguje; a tohle:
var objekt           =  document.createElement('span');
    objekt.innerHTML = 'Prvni radek<br>druhy radek <br>';
document.body.appendChild(objekt);
taky. Tak si vyberte :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0