3

JSFiddle で動作するコードがありますが、HTML+JS をローカルに保存してローカルでテストすると動作しません。コードの何が問題なのかわかりません。ここに私のJSFiddleがあります

http://jsfiddle.net/LLUAB/

そして、これが実際のコードです。それほど長くはありません

<!doctype html>
<html>
<head>
<script type="text/javascript" language="Javascript">
function Composer(foobox) {
    this.foobox = document.getElementById(foobox);

    this.foobox.onkeydown = function(){window.alert("hello")};
}

var myComposer = new Composer("foo");
</script>
</head>
<body>

<textarea id="foo"></textarea>

</body>
</html>
4

3 に答える 3

6

JSFiddle では、スクリプトはwindow.onLoadデフォルトでイベント ハンドラー内に配置されるためです。あなたの場合、getElementById()メソッドはまだロードされていない要素を見つけることができません。

</body>タグを閉じる直前にすべてのスクリプトを配置すると、機能します。

<script type="text/javascript">
    // ...
</script>
</body>
于 2013-03-22T14:20:44.100 に答える
1

onLoadここで指定したオプションにより、Fiddle で動作します。問題は、new Composerline が起動されたとき、そのような要素がまだ DOM にないことです。この行をDOMReadyハンドラでラップするか、その呼び出しを<body>要素の最後に移動します。

于 2013-03-22T14:21:11.240 に答える
0

それはあなたのdomがまだ準備ができていないからです

function Composer(foobox) {
    this.foobox = document.getElementById(foobox);
    alert(this.foobox); --Prints null
    this.foobox.onkeydown = function(){window.alert("hello")};
}

作業コードはこちら。http://jsfiddle.net/LLUAB/1/

于 2013-03-22T14:26:02.510 に答える