【问题标题】:External javascript window.onload firing early外部 javascript window.onload 提前触发
【发布时间】:2014-06-25 17:36:59
【问题描述】:

我有一个引用外部 javascript 文件的页面,当我告诉它运行 onload 函数时,它给了我错误(我假设是因为它在页面加载之前触发。)“无法设置属性 'innerHTML'为空”

页面加载后我需要在这里做什么才能触发 run()?

HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="js/test.js"></script>
</head>
<body>
    <div id="test"></div>
</body>
</html>

JS

window.onload = run();

function run() {
    document.getElementById("test").innerHTML = "found it";
}

【问题讨论】:

  • 谢谢,如果可以的话,我会接受你的两个答案。

标签: javascript onload external-js


【解决方案1】:

应该是:

window.onload = run;

当你这样做时:

window.onload = run();

您实际上是在运行名为run 的函数,然后将其返回值(在本例中为undefined)分配给window.onload

这个函数在页面加载之前就已经运行了(因为你通过run() 明确地运行它),此时带有id testdiv 甚至不存在。这就是您收到错误的原因。

【讨论】:

    【解决方案2】:

    试试这个:

    window.onload = run
    

    当您执行window.onload = run() 时,您将立即执行run() 并将返回 的所有内容分配给window.onload 属性。这就是它无法正常工作的原因。

    【讨论】:

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