2012-06-07 34 views
1

这里是我的代码:JavaScript的的getElementById和innerHTML的不工作间接

<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> 

像我期待它(我使用谷歌浏览器)我不工作。

,如果我直接运行它,这样它仅适用于:

<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> 

我检查了我的代码吨次,我无法找到任何明确的错误,像错别字或任何东西。如果那是问题,那么我很抱歉浪费你的时间,但这真是一个诡计'我。

+1

'1'不是一个有效的'id' – gdoron

+1

它认为第二种方式不应该工作而不是第一个,你用引号有混合... :( – gdoron

+2

'keyListener(){}'是不是有效的语法 – SLaks

回答

1

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

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

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

+0

它确实(至少在chrome中),但是当脚本在头部时执行脚本时不存在'document.body' – Esailija

+0

@Esailija:True。我的解释可能不对,但这是问题:-P –

+0

的作品!谢谢! – kukac67

2

Element IDs can't start with a number,这几乎肯定会影响您的问题。更改HTML和JS中的ID以字母开头。

所有的二,keyListener线或许应该是这样的:

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

但他使用第二个内联方式相同的ID ...? – gdoron

+0

我试着改变ID为字母,但第一种方式仍然无法正常工作... – kukac67

+0

@ kukac67。看到我的回答,它是否工作? – gdoron

0

我觉得ID不能以数字开头。

+0

你是对的,但这不是问题,他在第二个内联方式使用相同的ID,请参阅我的答案 – gdoron

+0

你是右gdoron ...我回答太快 – Michi

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>以上。

+0

我改变了ID为字母,我改变了keyListener的功能,它仍然无法正常工作。 – kukac67

+1

'document.body'在脚本被调用时不存在....使用'window.onload' – Esailija

+0

@ kukac67。查看我的更新。移动它的身体。 – gdoron

0

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

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