我正在尝试在元素列表上添加鼠标的侦听器事件。该代码适用于chrome,但不适用于IE
document.getElementsByClassName('select2-result-selectable').forEach(function(item){
item.addEventListener('mousedown', function(e) { console.log( "User clicked on 'foo.'" );
e.preventDefault();});
})
此功能适用于chrome,但不适用于IE 11。
我也尝试了以下代码。
document.getElementsByClassName('select2-result-selectable').forEach(function(item){
if (item.addEventListener){
item.addEventListener('mousedown',function(e){ console.log(e); e.preventDefault();
console.log( "User clicked on 'foo.'" );})
} else if (item.attachEvent){
item.attachEvent('mousedown',function(e){ console.log(e); e.preventDefault();
console.log( "User clicked on 'foo.'" );})
}
})
但这又是徒劳的,它适用于chrome,但不适用于IE。有什么建议吗?
我怀疑您会发现它不是addEventListener
,而是forEach
。getElementsByClassName
不是数组的返回值,它是HTMLCollection
。规范不需要HTMLCollection
具有forEach
(Chrome将其添加为扩展名)。
因此使用forEach
,您会这样做:
Array.prototype.forEach.call(document.getElementsByClassName('select2-result-selectable', function(item) {
// ...
});