在Javascript中调用函数loadText和loadText()之间的区别是什么?

时间:2014-08-05 11:48:56

标签: javascript html html5 dom

我有一个简单的JS函数,可以将文本行加载到无序列表中。

的Javascript

function loadText() {
    document.getElementById("text1").innerHTML = "Text1";
    document.getElementById("text2").innerHTML = "Text2";
    document.getElementById("text3").innerHTML = "Text3";
}
window.onload = loadText;

HTML

<ul id="textlist">
        <li id="text1"></li>
        <li id="text2"></li>
        <li id="text3"></li>
</ul>

这实际上适用于浏览器(Chrome),但是当我使用window.onload = loadText();代替window.onload = loadText;时。我收到错误:

  

未捕获的TypeError:无法设置null

的属性'innerHTML'

我认为这是因为DOM没有被读取所以我尝试了,但是在那里遇到了同样的问题。但是,将window.onload = loadText();更改回window.onload = loadText;会再次有效。

感觉有点奇怪,这会导致差异。我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:5)

window.onload = loadText();

这会立即执行loadText并将其返回值存储在window.onlad

window.onload = loadText;

这使得window.onload引用了loadText函数。现在调用window.onload()与调用loadText()

相同

答案 1 :(得分:3)

window.onload = loadText;告诉浏览器在加载文档时执行loadText。这意味着document.getElementById中的loadText将可用(并且正常工作)。

window.onload = loadText();立即执行loadText并将返回值(undefined)分配给window.onload。因此,作业无用,功能也不起作用。

你想要window.onload = loadText,我不知道你为什么试过window.onload = loadText();

答案 2 :(得分:0)

当浏览器读取该行时,

window.onload = loadText();将立即执行 window.onload = loadText;将分配值loadText并让浏览器加载完成dom