Autor Zpráva
Marty
Profil
Mám tento kód:

<span onclick="pridej_tag('<p class="po">','</p>');">text</span>


který ovšem adekvátně nefunguje kvůli uvozovkám u jména třídy. Jak na to? Jen podotknu, že ty dvojité uvozovky bych v paramteru funkce potřeboval.

Díky za pomoc
Dero
Profil
<span onclick="pridej_tag('<p class=\"po\">','</p>');">text</span>
Marty
Profil
Dero díky za hbitou reakci, ale po ozkoušení jsem musel konstatovat, že na stránce se zobrazí znaky navíc (zkrátka to nefunguje).
Chamurappi
Profil
Reaguji na Martyho:
Vžij se do role parseru.
První úroveň je HTML. Začal atribut, jmenuje se onclick, následuje rovnítko a hodnota, která je ohraničená uvozovkami. Co je uvnitř a čím se to zpracovává, to je vedlejší. Z pohledu značkovacího jazyka je to hodnota atributu, neznámé cosi obalené uvozovkami. V hodnotě mohou být užity HTML entity, překládají se, takže &amp; dorazí k javascriptovému interpretu jako ampersand a &quot; jako uvozovka. Na úrovni HTML je tedy řešením:
<span onclick="pridej_tag('<p class=&quot;po&quot;>','</p>');">text</span>
Jiná možnost: escapovat znak v JS. Běžným předřazením zpětného lomítka před uvozovku (jak ukazuje Dero) escapovat nemůžeš, protože se jí chytí už HTML parser a JS mu to nevymluví. JavaScript dovoluje zapsat uvozovku v řetězci i jako \x22, tedy znak s hexadecimálním kódem 22:
<span onclick="pridej_tag('<p class=\x22po\x22>','</p>');">text</span>
Jinak v HTML samozřejmě můžeš místo class="po" psát class='po' (apostrof uvnitř JS řetězce zapíšeš jako \' nebo \x27) nebo class=po.
Marty
Profil
Děkuji Chamurappimu za fungující radu a vysvětlení.
Téma uzavřeno.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0