ugrás a tartalomhoz

document.write vs. document.createElement

Anonymous · 2006. Jan. 19. (Cs), 11.48
Sziasztok, valaki le tudná írni, hogy miért lenne érdemes a második verziót használni? Tényleg elegánsabb az a verzió, de sokkal hosszabb, átláthatóbbnak sem átláthatóbb, így egyelőre nem látom, hogy miért?
De mivel igyekszem nyitott lenni az új technológiák iránt, megkérdezem, hogy miért jobb az a módszer?
 
1

XHTML, DOM, beszúrás

Jano · 2006. Jan. 19. (Cs), 12.43
Az első ok amivel nincs mit vitatkozni: XHTML dokumentumban document.write nem alkalmazható. Az XHTML ugyanis XML is egyben, ott pedig a feldolgozás előtt első követelmény a jól formáltság. Mivel a document.write csak a feldolgozáskor kerülne kiértékelésre, ezért kicsúszna az ellenőrzés alól.

Az, hogy mi átláthatóbb az izlés kérdése. Egy document.createElementtel létrehozott objektumot elegánsan lehet tovább kezelni utána további JavaScript és DOM függvényekkel.
Pl ki kell tenni egy figyelmeztető szöveget egyszer piros, egyszer sárga színnel. Ha document.write-tal csinálod akkor string összefűzéssel kell bohockodni, ami azért nem mindig könnyen átlátható meg vacakolni kell pl az aposztrof, idézőjelekkel, vagy levédéssel.
DOM függvényekkel: létrehozod szöveget, létrehozod elemet, megadsz neki egy osztályt, végül befűzöd a dokumentumba.

Document.writtal nem tudsz a dokumentumon belül bárhová beszúrni dolgokat. Amíg töltődik le az oldal addig elmegy, de amikor már kész akkor akkor maximum innerHTML marad.

Ami a document.write illetve innerHTML mellett szól, hogy egyelőre jóval gyorsabban csinálják meg a böngészők. Persze csak akkor van értelme erről beszélni, ha nagyszámú elemet kell létrehozni (mondjuk 100-as nagyságrend).
2

Köszi,

Anonymous · 2006. Jan. 19. (Cs), 13.24
azt hiszem, hogy az itt leírtakon most el fogok tudni gondolkodni... :)
Ugye azért a nem alkalmazható kifejezést úgy kell érteni, hogy nem illik alkalmazni? Csak azért, mert jelenleg én alkalmazom, és pont azért gondoltam, hogy váltok, mert mégiscsak... :)
3

Nem lehet

attlad · 2006. Jan. 19. (Cs), 14.02
Ugye azért a nem alkalmazható kifejezést úgy kell érteni, hogy nem illik alkalmazni?

Úgy kell érteni, hogy ha real XHTML-ben használod (nem text/html-ként kiszolgált XHTML "bohóckodással") akkor a böngészők nem fogják végrehajtani.

Pl. application/xhtml+xml-ként kiszolgált XHTML 1.0 Strict teszteredmény:
- Opera 8.51 figyelmen kívül hagyja document.write-ot
- Firefox 1.07 figyelmen kívül hagyja
- Konqueror 3.4.3 végrehajtja
- IE meg se tudja jeleníteni az ilyen XHTML-t