在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 為什么addEventListener沒有點擊卻自己執(zhí)行了?

為什么addEventListener沒有點擊卻自己執(zhí)行了?

我用addEventListener給所有<a>tag加上click屬性和一個function做handler,但是為什么測試的時候我并沒有click,handler就已經(jīng)自己觸發(fā)?

var els = document.getElementsByTagName("a");

for(var i = 0; i< els.length;i++){
  console.log(els[i].innerHTML);
  els[i].addEventListener("click",myFunction(els.innerHTML));
}

function myFunction(x){
  console.log(x);
  document.getElementById('demo').innerHTML=x;//我還沒有click就已經(jīng)運行這一行了
}
回答
編輯回答
過客

addEventListener第二個參數(shù)接收的是個Function,在觸發(fā)時執(zhí)行的。你一定要把某個參數(shù)傳到這個function里的話,用閉包返回一個Function

el.addEventListener("click", myFn(args));
function myFn(args){
    return function(e){
        console.log(args);
    }
}
2018年3月2日 05:20
編輯回答
愿如初

綁定的時候myFunction(els.innerHTML)就已經(jīng)自己執(zhí)行了,如以下代碼改進(jìn):

var els = document.getElementsByTagName("a");

for(var i = 0; i< els.length;i++){
  console.log(els[i].innerHTML);
  els[i].addEventListener("click",myFunction);
}

function myFunction(e){
  document.getElementById('demo').innerHTML=e.target.innerHtml;
}
2017年6月18日 08:20