2016-04-10 18 views
0

以下に示すように、 'window.onload'なしで実行され、var xは '[]'ではなく '[<div class="myInput"></div>]'です。getElementsByClassNameが "window.onload"なしで実行できる理由

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

どのようにして要素を配列に入れますか?

+2

「ライブHTMLコレクション」 –

+0

xはクロームで ''[

]'です。自分で試してください – jinsihou

+0

@itsgoingdown thx、私は分かります。 – jinsihou

答えて

1

xは、見つかった要素のライブHTMLCollectionです。つまり、基礎となるドキュメントが変更されたときに自動的に更新されます(この場合、読み込み時に)。

のでxの値は、最初にドキュメントがロードされたときにそれがあるとは異なっている:

<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

HTMLドキュメントには、上から下へ、ブラウザによって読み取られます。 先頭にある間にx = document.getElementsByClassName("classname")を実行しようとすると、スクリプトタグの1行目以降にブラウザが何も読み取らないため、要素が存在しません。

ブラウザでは、後で<body>というタグが読み取られ、要素を作成し、その時点でonloadとすると、リストが表示されます。

+0

なぜ、面白いかについてのコメントなしで正しいものを言うためにdownvoted。 – Dellirium

+0

私のコードを試すことができ、xはクロムの中で '[

]'です。 – jinsihou

+0

ああ待って私は質問を誤解したので、質問はなぜそれはできない、なぜそれはできないのですか?それは奇妙なことができるように思えるが、私は問題が何かを見ていない。 – Dellirium

関連する問題