【问题标题】:Javascript's getElementById and innerHTML Don't Work IndirectlyJavascript 的 getElementById 和 innerHTML 不能间接工作
【发布时间】:2012-06-07 15:19:38
【问题描述】:

这是我的代码:

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

我检查了我的代码无数次,但我找不到任何明显的错误,例如拼写错误或任何其他错误。如果这是问题所在,那么我很抱歉浪费了您的时间,但这真的让我很烦。

【问题讨论】:

  • 它认为第二种方式不应该代替第一种方式工作,你正在与那里的引号混合...... :(
  • keyListener(){} 语法无效。

标签: javascript innerhtml getelementbyid


【解决方案1】:

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

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

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

【讨论】:

  • 但是他在第二个内联方式中使用相同的 id...?
【解决方案2】:

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

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

演示:http://jsfiddle.net/9khng/

【讨论】:

  • 它确实存在(至少在 chrome 中)但在执行脚本时document.body 不存在,因为脚本在头部
  • @Esailija:是的。我的解释可能不对,但这就是问题所在:-P
  • @kukac67:您的意思是标记一个问题“已解决”?单击向上/向下投票箭头下的复选标记。
【解决方案3】:

改变:

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

收件人:

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

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

并将代码移动到&lt;body&gt; 标记或使用window.onload
document.body&lt;body&gt; 上方不存在。

【讨论】:

  • 我将 id 更改为字母,并将 keyListener 更改为功能,但它仍然不起作用。
  • document.body 在调用脚本时不存在....使用window.onload
  • @gdoron 是的,正好在同一秒 xD
  • @Esailija。但是我在评论之前编辑了我的答案,这意味着=> 5 秒。 :) LOL
【解决方案4】:

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

【讨论】:

  • 你是对的,但这不是这里的问题,他在第二种内联方式中使用了相同的 id。看我的回答。
【解决方案5】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多