繁体   English   中英

如何在元素的javascript数组中为所有元素分配侦听器?

[英]How can I assign a listener to all elements witihin a javascript array of elements?

基本上,我想知道的是我该怎么做,基本上可以像这样工作:

document.getElementsByClassName('particle')[all].addEventListener('mouseover', Jump, false);

我已经尝试过使用for循环,它冻结了浏览器:

for(var i=0; i <= document.getElementsByClassName('particle').length, i+1){
  document.getElementsByClassName('particle')[i].addEventListener('mouseover', Jump, false);
}

为什么没有用? 我该怎么做才能达到这种效果?

我也尝试过:

document.getElementsByClassName('particle')[0,1,2,3,4].addEventListener('mouseover', Jump, false);

但是,那也不起作用。 它仅适用于第一个和最后一个元素,而不适用于任何其他元素。

for循环是正确的方法。

for(var i=0; i <= document.getElementsByClassName('particle').length, i+1){

应该

for (var i=0; i<document.getElementsByClassName('particle').length; i+=1) {

另外,如果只查询一次DOM,效率会更高:

var particles = document.getElementsByClassName('particle');
for (var i=0; i<particles.length; i+=1) {
    particles[i].addEventListener('mouseover', Jump, false);
}

更新:

for(var i=0; i <= document.getElementsByClassName('particle').length, i+1){

应该

for(var i=0; i < document.getElementsByClassName('particle').length; i++){
                ^                                                  ^   ^

第一个错误:由于我以0开头,因此应使用<而不是<=
Seconde错误: ,应为;
第三个错误: i应该在循环中重新分配值,因此它应该是i++而不是i+1

并且请注意,getElementsByClassName()在IE8及更高版本中不可

确保您的浏览器支持此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM