Javascript的getElementById和innerHTML不能间接工作

时间:2012-06-07 15:19:39

标签: javascript innerhtml getelementbyid

这是我的代码:

<html>
<head>
<title>My Game Title Goes Here!</title>
<script type="text/javascript">
function startGame(){
    document.getElementById("2").innerHTML = ('Testing!');
}
document.body.onload = keyListener(){
    document.getElementById("1").onkeypress = startGame;
}
</script>
</head>
<body>
<div class="title" name="Game Title" id="0">Game Title</div>
<div tabindex="0" class="gamecontainer" name="Game Container" id="1">
Press any key to start.
</div>
<div class="gamemonitor" name="Game Monitor" id="2">
Game Monitor:
</div>
</body>
</html>

我没有像我期望的那样工作(我正在使用Google Chrome)。

只有在我直接运行它时才有效:

<div tabindex="0" class="gamecontainer" name="Game Container" id="1" onkeypress="document.getElementById('2').innerHTML = ('Testing!')">
Press any key to start.
</div>
<div class="gamemonitor" name="Game Monitor" id="2">
Game Monitor:
</div>

我检查了我的代码很多次,我找不到任何明显的错误,如错别字或任何东西。如果这是问题,那么我很抱歉浪费你的时间,但这真的是错误'我。

5 个答案:

答案 0 :(得分:2)

Element IDs can't start with a number,这几乎肯定会对你的问题做出贡献。将HTML和JS中的ID更改为以字母开头。

其次,keyListener行应该是这样的:

window.onload = function(){
    document.getElementById("newId").onkeypress = startGame;
}

答案 1 :(得分:1)

更改:

document.body.onload = keyListener(){
    document.getElementById("1").onkeypress = startGame;
}

要:

document.body.onload = function(){
    document.getElementById("1").onkeypress = startGame;
}

并且,id不应以数字开头,因为它是无效的HTML Chrome似乎克服了这个错误,但不应该使用它。

将代码移至<body>标记或使用window.onload
document.body上方不存在<body>

答案 2 :(得分:1)

document.body没有onload属性。它应该是window.onload

window.onload = function(){
    document.getElementById("1").onkeypress = startGame;
}

DEMO:http://jsfiddle.net/9khng/

答案 3 :(得分:0)

我认为ID不能以数字开头。

答案 4 :(得分:0)

尝试修复“onkeypress”属性。你的报价搞砸了。

onkeypress="document.getElementById('2').innerHTML = ('Testing!')"