Javascript循环调用函数

Javascript Loop to Call a Function

本文关键字:函数 调用 循环 Javascript      更新时间:2023-09-26

试图找出onmouseover, onmouseout和onclick与几张图片都具有相同的ID标签。要做到这一点,我知道我需要一个。length循环。

此代码不需要长度循环…

window.onload = setPictures;
function setPictures() {
    var img = document.getElementById("pictureBox");
        img.onmouseover = mouseOverImage;
        img.onmouseout= mouseOutImage; 
}
function mouseOverImage() {
    var img = document.getElementById("myImg");
    img.style.opacity = .5;
}
function mouseOutImage() {
    var img = document.getElementById("myImg");
    img.style.opacity = 1;
}

这是我尝试的不工作的循环函数。

window.onload = setPictures;
function setPictures() {
   var img = document.getElementById("pictureBox");
   for (var i=0; i<img.length; i++) {       
      img[i].onmouseover = mouseOverImage;
      img[i].onmouseout= mouseOutImage;}
 }

请指教,并提前感谢您的帮助!

getElementById只返回一个元素,因为ID应该是唯一的。

相反,为每个元素添加一个类,并按类选择它们。回调可以依赖于鼠标事件的this上下文:

function mouseOverImage() {
    this.style.opacity = .5;
}
function mouseOutImage() {
    this.style.opacity = 1;
}
window.onload = function setPictures() {
    var imageCollection = document.getElementsByClassName('pictureBox');
    for (var i=0; i < imageCollection.length; i++) {       
        imageCollection[i].onmouseover = mouseOverImage;
        imageCollection[i].onmouseout = mouseOutImage;
    }
 }

前面已经说过,getElementById只返回一个元素。
下面这些可以帮助你:

window.onload = setPictures;
    function setPictures() {
       var img = document.getElementById("pictureBox0");
       for (var i=1; img != null; i++) {       
          img.onmouseover = mouseOverImage;
          img.onmouseout= mouseOutImage;
          img = document.getElementById("pictureBox"+i);
       }
     }