1
<html>
<style>
#myA {
    height: 300;
    width: 300;
    background: green;
}
</style>
<body>
<script language="JavaScript">

document.getElementById('myA').onmousedown = function() {
    var a = document.getElementById('myA');
    console.log(a);
}
</script>
<div id="myA"></div>
</body>
</html>

上記のコードが機能しないのはなぜですか? console.log を書き込もうとすると、何も取得されず、null 値が返されます。

4

3 に答える 3

3

スクリプトを実行すると、myA要素はまだ存在しません。また:

  • スクリプトをページの最後に移動します
  • ページの最後にある別のスクリプト ブロックから呼び出す名前付き関数に配置します。
  • あなたのコードを入れてくださいwindow.onload
  • jQuery を使用して、DOM の構築後にコードを実行します$()
于 2013-02-13T19:21:38.770 に答える
0

そのdivの下にスクリプトを書く必要があります。divがまだロードされていないためです。または、ドキュメントの準備ができたら、関数とこの関数呼び出しを記述できます。

于 2013-02-13T19:22:05.717 に答える
0

次のように、コードを関数でラップし、window.onload イベントにアタッチします。

window.onload = function(e) {
    document.getElementById('myA').onmousedown = function() {
        var a = document.getElementById('myA');
        console.log(a);
    };
};

他の人が言ったように、まだロードされていない要素にイベントをアタッチしようとしているために発生します。

于 2013-02-13T19:32:09.580 に答える