黑马程序员技术交流社区
标题:
一个纠结了很久,弄不明白的问题?
[打印本页]
作者:
王海舟
时间:
2012-9-2 08:46
标题:
一个纠结了很久,弄不明白的问题?
本帖最后由 王海舟 于 2012-9-2 08:52 编辑
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
function initEvent() {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var input = inputs
;
input.onclick = btnClick;
}
}
function btnClick() {
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
var input = inputs
;
if (input == window.event.srcElement) {
input.value = "呜呜呜";
}
else {
input.value = "哈哈哈";
}
}
}
</script>
</head>
<body>
<input type="button" value="神游中" />
<input type="button" value="神游中" />
<input type="button" value="神游中" />
<input type="button" value="神游中" />
<input type="button" value="神游中" />
<input type="button" value="神游中" />
</body>
</html>
在以上代码中被标注为红色的部分:
input.onclick = btnClick;
为什么不是
input.onclick = btnClick();即为什么没有括号呢?
作者:
李杰
时间:
2012-9-2 09:54
语法就是这样定义的
作者:
王海舟
时间:
2012-9-2 10:40
input.onclick = btnClick;
其中onclick是作为一个事件,而事件机制的内部包含的是委托链,也就是说它接收的应该是方法的地址(函数指针)。如果这么理解的话,这里的确应该是btnClick,而不是btnClick()。
但是,在很多javaScript代码中,经常出现诸如:<input type="button" onclick="btnClick()" />这种形式,这里的onclick也是一个事件呀,为什么它接收的是一个方法的返回值(btnClick()),而不是一个方法的地址呢(btnClick)?
作者:
王海舟
时间:
2012-9-2 10:41
李杰 发表于 2012-9-2 09:54
语法就是这样定义的
input.onclick = btnClick;
其中onclick是作为一个事件,而事件机制的内部包含的是委托链,也就是说它接收的应该是方法的地址(函数指针)。如果这么理解的话,这里的确应该是btnClick,而不是btnClick()。
但是,在很多javaScript代码中,经常出现诸如:<input type="button" onclick="btnClick()" />这种形式,这里的onclick也是一个事件呀,为什么它接收的是一个方法的返回值(btnClick()),而不是一个方法的地址呢(btnClick)?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2