Autor Zpráva
Kápo
Profil
Mohol by mi dakto vysvetlit, ako sa zapisuju veci typu document.write(trebars for cyklus, alebo znova <script>document.write(...

Ked som sa pytal ako zapisat document.write, v ktorom bol dalsi zapis s vlozenim externeho scriptu a niekto mi odpovedal, a boly tam nejake cary mary so spatnymi lomitkami ("\") atd...na jakpsatweb.cz v sekcii javascript som tuto syntax nenasiel, vysvetlil by mi dakto prosim aspon princip, ako pristupovat k znakom ",',/ atd, ked ich zapisujem do document.write?

Za pripadnu pomoc dakujem
Lopata
Profil
Kápo:
<rejp>průměrný moderátor by Tě tu napomenul, že nepoužíváš diakritiku :-P</rejp>

Ten první dotaz jsem příliš nepochopil. Pokud máš nějaký skript v řetězci a potřebuješ ho vykonat, je na to funkce eval()
eval('alert("Kápo")');

Není to ale dvakrát šťastné řešení a obecně bych se snažil předejít situaci vůbec s takovým řetězcem pracovat.

Zpětná lomítka fungují následovně:
var x = 'normalní řetězec'; // vše ok
var y = "normalní řetězec"; // vše ok
var z = '<a href="www.seznam.cz">Seznam</a>'; // vše ok -> uvozovky v apostrofech nevadí (ani obráceně)
var error = "<a href="www.seznam.cz">Seznam</a>"; // error -> uvozovky v uvozovkách být nemůžou
var fixed_error = "<a href=\"www.seznam.cz\">Seznam</a>"; // vše ok -> přidáním \ před znak mu "sebereme původní funkci a on se bude chovat jako každý jiný znak"
var tricky = "\\\""; // má hodnotu \"


Už chápeš...? ;-)
Kápo
Profil
No skoro, ale to posledné som nepochopil...prečo "\\\"" má hodnotu \"?

ale keď chcem napriklad zapísať
<script>document.write("<script src='a.js'></script?");</script>

je to takto dobre? vo výraze nie su uvodzovky v uvodzovkách, ale apostrofy v uvodzovkách, takže by to malo ist...môžem to nahradiť aj týmto:
document.write("<script src=\"a.js\"></script?");
?
takže celé je to o tom, že nesmú byť uvodzovky v uvodzovkách?
Yur4Y
Profil
Kápo:
No skoro, ale to posledné som nepochopil...prečo "\\\"" má hodnotu \"?
Keď používate úvodzovky, musíte escapovať úvodzovky a lomítko. Preto \ sa zapíše ako "\\" a úvodzovka ako "\"". Dokopy teda zápis \" vyzerá ako "\\\"", čo je to isté ako '\\"' - pretože ak používate apostrofy, escapujú sa zasa spätné lomítka a apostrofy.

Značku </script>, ak ju vypisujete pomocou document.write, vypíšte po častiach, napr. "</scr"+"ipt>" alebo proste nejak zabezpečte, aby tam to </script> nebolo (kľudne aj zápisom "<\/script>"). Je to kvôli tomu, že v Standards móde prehliadač pri parsovaní HTML nepozná Javascript a tak Javascript je len od <script> po </script>, a je jedno, či je vnútri ešte neuzavretý reťazec.
Kápo
Profil
Ďakujem za pomoc členovi Lopata (pardon, som zvyknutý písať bez diakritiky, snáď sa mi tento zlozvyk podarí obmedziť alebo úplne odstrániť) a členovi Yur4Y.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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