ugrás a tartalomhoz

getElementsByTagName head-en belüli hívása nullát ad vissza

grimus · 2007. Feb. 20. (K), 13.32
Ha a document.getElementsByTagName a head-ből hívódik meg, mint alább az onload után, akkor a dokumentum elemeire mindig nullát ír. Hogyan lehet a headből hozzáférni?
  1. <html>  
  2. <head>  
  3. <title>getElementsByTagName example</title>  
  4. <script type="text/javascript">  
  5. function getAllParaElems()  
  6. {  
  7.   var allParas = document.getElementsByTagName("p");  
  8.   var num = allParas.length;  
  9.   alert("There are " + num + " <p> elements in this document");  
  10. }  
  11. document.onload = getAllParaElems();   
  12. </script>  
  13. </head>  
  14. <p>Some outer text</p>  
  15. <p>Some outer text</p>  
  16. <button onClick="getAllParaElems();">  
  17.  show all p elements in document</button><br />  
  18. </body>  
  19. </html>  
 
1

Gyakori hiba

vbence · 2007. Feb. 20. (K), 13.50
Ez biztos nem azt csinálja:
  1. document.onload = getAllParaElems();  
Amit írtál az lefuttatja a függvényt a head betöltődésekor (amikor még nincs egy darab P sem), és a függvény visszatérő értékével teszi egyenlővé az onload-ot. Amúgy az window.onload, nem pedig document.onload.

Tehát helyesen:
  1. window.onload = getAllParaElems;  
Még helyesebben pedig valami attachEvent megoldást kéne használni. Keress rá itt a Weblaboron.
2

vagy még ennél is helyesebben...

wiktor · 2007. Feb. 20. (K), 14.22
a Dean Edwards féle methodot kellene...
http://dean.edwards.name/weblog/2006/06/again/

(Bár vannak akik ezzel se elégedettek teljes mértékben.)
http://peter.michaux.ca/article/553
3

Sőt..

vbence · 2007. Feb. 20. (K), 14.45
Még vannak az ondomload megoldások is.