看看下面的代码:JavaScript的 - 调用函数使用和不使用括号
HTML
<button id="button>click me</button>
JS - VERSION 1
window.onload = init;
function init() {
console.log('init called');
var button = document.getElementById('button');
button.onclick = buttonClickHandler;
}
function buttonClickHandler() {
console.log('button clicked');
}
VS相同的HTML
JS - VERSION 2
window.onload = init();
在这两种情况下,为“init称为”出现在控制台“立即”,但在第二种情况下,它后面是一个错误,说明按钮为空。
这里有两件事。 1)在版本1中,它等待DOM在版本2中加载2),它发生在DOM加载之前,或者看起来如此。
我的问题。请尽可能清楚地说明版本1中发生了什么,以及版本2中发生了什么。什么是window.onload = init
与window.onload = init()
是什么?另请说明每个版本的行为。为什么1会等待,但2不会?
脚本需要放在按钮元素之前,例如在头部:http://jsfiddle.net/XMEjr/1/
thx。我很有趣,如何写骨干和角码,但甚至不知道这一点。有些人可能会说可怕的,但我继续,并始终写清楚可重复使用的代码。不过,我认为这种基本的理解能够帮助很多事情在许多情况下都能实现。 – dewd
另外,我只是读了一些地方,当使用window.onload = init()会工作,如果init()返回一个函数,例如runInit()。然后runInit()会在DOM加载后运行。在询问之前,我真的需要更好的谷歌搜索,但是您一直在帮助很大。谢谢。 – dewd
不客气。 )是的,你可以运行一个返回函数的特定函数;毕竟,这是一种价值。 – raina77ow