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?

<html>
<head>
<title>getElementsByTagName example</title>
<script type="text/javascript">
function getAllParaElems()
{
  var allParas = document.getElementsByTagName("p");
  var num = allParas.length;
  alert("There are " + num + " <p> elements in this document");
}
document.onload = getAllParaElems(); 
</script>
</head>
<p>Some outer text</p>
<p>Some outer text</p>
<button onClick="getAllParaElems();">
 show all p elements in document</button><br />
</body>
</html>
 
1

Gyakori hiba

vbence · 2007. Feb. 20. (K), 13.50
Ez biztos nem azt csinálja:
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:
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.