0
我想添加事件监听器到循环中的元素,但我努力获取参数传递给匿名函数正确。添加具有参数的事件监听器到循环中的元素
这里有我想要的JS应用到HTML的例子:
<button data-messagesend="Hello!">Send Hello</button>
<button data-messagesend="Goodbye!">Send Goodbye</button>
而这里的JS:
// sendMsg function that will be applied to elements as an event listener
function sendMsg(msg) {
console.log(msg);
}
//Get all elements that have the data-sendmessage property
elts=document.querySelectorAll('[data-messagesend]');
//Create global array for messages
var messages=[];
//Loop through elements and add an event listener to call sendMsg with it's massage
for(i=0;i<elts.length;i++) {
//add element data-sendmessage value to messages array
messages[i]=elts[i].dataset.messagesend;
//add event listener
elts[i].addEventListener('click',function(){sendMsg(messages[i]);}.bind(messages[i]),false);
}
它的//add event listener
行我与挣扎
我也试过:
elts[i].addEventListener('click',function(){sendMsg(messages[i]);}.bind(messages,i),false);
和
elts[i].addEventListener('click',(function(msg){sendMsg(msg);})(messages[i]),false);
,但它只是返回undefined
被点击的按钮后。
任何帮助将是巨大的:d
小提琴
https://jsfiddle.net/to4nLz8L/
使用闭合,'的ELT [I] - 阅读进度 - ( '点击',函数(){ (功能(I){ SENDMSG(消息[1]);} (I));} ,假) ;' – Tushar
仍然回来undefined :( –
https://jsfiddle.net/to4nLz8L/ –