2016-04-10 18 views
0

Wie Sie unten sehen können, wird es ohne 'window.onload' und var x ist '[<div class="myInput"></div>]', aber nicht '[]'.Warum kann getElementsByClassName ohne "window.onload" ausgeführt werden

<html> 
<head> 
    <script type="text/javascript"> 
     var x=document.getElementsByClassName("myInput"); 
    </script> 
</head> 
<body> 
    <div class="myInput"></div> 
</body> 
</html> 

Wie und wann es das Element in das Array?

+2

Weil es 'live HTMLCollection' ist –

+0

x ist' '[

]' 'in Chrom, versuchen Sie selbst – jinsihou

+0

@itsounddown thx, verstehe ich. – jinsihou

Antwort

1

x ist ein Live HTMLCollection der gefundenen Elemente, was bedeutet, dass es automatisch aktualisiert wird, wenn das zugrunde liegende Dokument geändert wird (in diesem Fall, wie es lädt).

So wird der Wert von x zunächst anders, als es ist, wenn das Dokument geladen wird:

<html> 
 
<head> 
 
    <script type="text/javascript"> 
 
     var x=document.getElementsByClassName("myInput"); 
 
     document.write('Initial: ', x, '<br>'); 
 
     document.write('Initial Length: ', x.length, '<br>'); 
 
    </script> 
 
</head> 
 
<body> 
 
    <div class="myInput"></div> 
 
    
 
    <script type="text/javascript"> 
 
     document.write('Final: ', x, '<br>'); 
 
     document.write('Final Length: ', x.length, '<br>'); 
 
    </script> 
 
</body> 
 
</html>

-2

Das HTML-Dokument wird vom Browser von oben nach unten gelesen. Wenn Sie im Kopf versuchen, x = document.getElementsByClassName("classname") zu tun, sind keine Elemente vorhanden, da der Browser immer noch nichts nach der ersten Zeile des Skript-Tags gelesen hat.

Später würde der Browser das <body> Tag lesen, Elemente erstellen und wenn Sie es an diesem Punkt mit onload aufrufen, würden Sie die Liste erhalten.

+0

downvoted für das Sagen der richtigen Dinge ohne Kommentar wie auf warum, interessant. – Dellirium

+0

Sie können meinen Code versuchen, und x ist '[

]' in Chrom. – jinsihou

+0

Oh, warte ich missverstanden die Frage, so ist die Frage, warum es kann und nicht warum es nicht kann? Es scheint komisch, dass es das kann, aber ich sehe nicht, was das Problem ist. – Dellirium

Verwandte Themen