obj.ondblclick = mousestatus()这样的意思是把 mousestatus()这个函数执行的结果赋值给obj.ondblclick,假设mousestatus()返回1,那么最后obj.ondblclick 就是1了。这与本意不符的。
obj.ondblclick = mousestatus;这里的mousestatus其实是指向mousestatus()这个函数的指针(像C或C++的函数指针那样吧,我也不太清楚),所以obj.ondblclick 的值其实是指向了mousestatus()这个函数,当你点击obj时就会触发mousestatus()啦。
说得有点罗嗦,但不知道你明白了没有。
此处的e 相当于 定义了个变量 var e; 其中这一句if(!e) e = window.event; 就是相当于 var e= window.event;
所以你这样写也是可以的
function mousestatus(){
var e;
if(!e) e = window.event;
btn = e.button;
whichone = (btn<2)?"Left":"Right";
message = e.type + ":"+ whichone + "\n" ;
document.form1.info.value += message;
}
……
括号是执行操作符,带了括号就是执行的意思。
obj.ondblclick = mousestatus();
执行到这里的时候先执行了mousestatus函数再把执行结果返回去。
就不是事件绑定了。
obj.ondblclick=function(){
}
这是可以的,同理,ondblclick和mousestatus不过是一函数名称而已,所以,这二者是等价的
不清楚