onclick事件问题

时间:2011-03-13 21:03:25

标签: javascript

我只是好奇,为什么要加载此事件而不是在点击时触发自己。

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

3 个答案:

答案 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);
};

通过这种方式,您可以获得事件对象以及对您为事件处理程序分配的对象的引用,这就是您尝试在代码中执行的操作。