我只是好奇,为什么要加载此事件而不是在点击时触发自己。
window.onload=initAll;
function initAll(){
var divPath = document.getElementsByTagName("div")[0];
var theLink = divPath.getElementsByTagName("a")[0];
theLink.onclick = myEvent(theLink);
};
function myEvent (myMan){
myMan.innerHTML="You're my maan,bro!!!";
return false;
};
10x为您提供帮助 BR
答案 0 :(得分:3)
当您撰写theLink.onclick = myEvent(theLink)
时,您致电 myEvent
并将结果分配给onclick
。
您需要创建一个单独的函数,使用参数调用myEvent
,并将其分配给onclick
:
theLink.onclick = function() { return myEvent(theLink); };
答案 1 :(得分:1)
因为根据您的代码,您将函数myEvent返回的值指定为theLink事件处理程序而不是函数本身。 您应该将代码更改为:
window.onload=initAll;
function initAll(){
var divPath = document.getElementsByTagName("div")[0];
var theLink = divPath.getElementsByTagName("a")[0];
theLink.onclick = function(){ return myEventHandler(theLink)};
};
function myEvent (myMan){
myMan.innerHTML="You're my maan,bro!!!";
return false;
};
答案 2 :(得分:1)
因为您要将函数调用myEventHandler(theLink)
的结果分配给theLink.onclick
属性。你实际上要做的是以下几点:
theLink.onclick = myEventHandler
将reference分配给theLink.onclick
属性的myEventHandler函数。传递给该函数的参数将是event object,您可以从中确定实际单击了哪个对象。或者,您可以创建closure:
theLink.onclick = function(event) {
myEventHandler(event, theLink);
};
通过这种方式,您可以获得事件对象以及对您为事件处理程序分配的对象的引用,这就是您尝试在代码中执行的操作。