在对象内部使用document.getElementById(),在JSFiddle中工作,实际上是TypeError.为什么?

Hex*_*l C 2 html javascript jsfiddle

我有一个在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>
Run Code Online (Sandbox Code Playgroud)

Vis*_*ioN 6

因为在JSFiddle中,您的脚本window.onLoad默认放在事件处理程序中.虽然在你的情况下getElementById()方法无法找到尚未加载的元素.

在关闭</body>标记之前将所有脚本放好,它将起作用:

<script type="text/javascript">
    // ...
</script>
</body>
Run Code Online (Sandbox Code Playgroud)