Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在带有img元素的for循环中使用addEventListener吗_Javascript_Addeventlistener - Fatal编程技术网

Javascript 我可以在带有img元素的for循环中使用addEventListener吗

Javascript 我可以在带有img元素的for循环中使用addEventListener吗,javascript,addeventlistener,Javascript,Addeventlistener,我知道addEventListener对IE不友好,但我对这种方法总的来说很好奇 我尝试在循环中使用带有imgs的“onload”addEventListener,而不是我的函数不触发。看起来事件侦听器只是被添加到第一个元素中。图像路径来自于一些PHP,我正试图从HTML中去掉onload 最初我是这样做的(摘自PHP的HTML): 我是否应该一起避免使用addEventListener(IE的b/c)。当我在循环中直接使用elem.onload时,我确实看到doIt启动 // this wil

我知道addEventListener对IE不友好,但我对这种方法总的来说很好奇

我尝试在循环中使用带有imgs的“onload”addEventListener,而不是我的函数不触发。看起来事件侦听器只是被添加到第一个元素中。图像路径来自于一些PHP,我正试图从HTML中去掉onload

最初我是这样做的(摘自PHP的HTML):

我是否应该一起避免使用addEventListener(IE的b/c)。当我在循环中直接使用elem.onload时,我确实看到doIt启动

// this will fire the doIt!
elem.onload = doIt();

谢谢

我建议使用JQuery,它与几乎所有浏览器都兼容,并且非常容易编写您要执行的操作:

$('img').load(function() {
  // Handler for .load() called.
  console.log("YO!");
});
但是,您的代码似乎是正确的。

更改为

 elem.addEventListener('load', doIt, false);

你把事件类型搞错了。您的是指
attachEvent
。有关事件类型的完整列表,请查看。

如果您只附加一个侦听器(这是绝大多数情况),最简单的方法就是将其添加到相应的属性中:

var i = document.images.length;
while (i--) {
  document.images[i].onload = doIt;
}

这将适用于所有支持脚本的浏览器。

太棒了!谢谢你的链接!!我在MDN上支持类似的东西。链接实际上列在MDN上,-)Dottoro的支持和HTML参考肯定很好。这是我在MDN上找到的一个李星:啊,我明白了!这现在是有道理的,避免了IE问题。我会的,谢谢!
$('img').load(function() {
  // Handler for .load() called.
  console.log("YO!");
});
 elem.addEventListener('load', doIt, false);
var i = document.images.length;
while (i--) {
  document.images[i].onload = doIt;
}