将带有循环的onmouse事件分配给div数组-Javascript

将带有循环的onmouse事件分配给div数组-Javascript,javascript,arrays,dom-events,Javascript,Arrays,Dom Events,我试图将onmouseover-onmouseout事件分配给一个带有循环的div数组 我也通过一个循环创建了div,使用一个函数参数createDivs(x),x表示div的数量和一堆this.property来分配样式 一切都按预期工作,但通过带有divArray.Length对象的循环分配鼠标事件 脚本如下所示: 制作div: containers : { create : function(containerCount){ var cArray = [this.

我试图将onmouseover-onmouseout事件分配给一个带有循环的div数组

我也通过一个循环创建了div,使用一个函数参数
createDivs(x)
x
表示div的数量和一堆
this.property
来分配样式

一切都按预期工作,但通过带有
divArray.Length
对象的循环分配鼠标事件

脚本如下所示:

制作div:

containers : {

    create : function(containerCount){
        var cArray = [this.c1Color,this.c2Color,this.c3Color];
        var aCounter = 0;
        divArray = [];
        for (var i = 1; i <= containerCount; i++){
            var c = document.createElement("div");
            c.id = ("container"+i);
            c.style.width = "100%";
            c.style.height = (this.height) + "px";
            c.style.backgroundColor = (cArray[aCounter]);
            aCounter++;
            document.body.appendChild(c);
            divArray.push(c);

            }

        }

},
容器:{
创建:函数(容器计数){
var cArray=[this.c1Color,this.c2Color,this.c3Color];
var aCounter=0;
divArray=[];

for(var i=1;i看起来您需要一个新的作用域来在事件处理程序中保持
cont
变量的值不变。我替换了
cont
变量,因为它看起来并不必要

events : {

    on : function () {

        for (var j = 0; j < divArray.length; j++){

            (function(i) {

                divArray[i].onmouseover = function(){
                    gala.animate.openAnimation("container" + (i+1));
                }

                divArray[i].onmouseout = function(){
                    gala.animate.shrinkAnimation("container" + (i+1));
                }

            })(j);

        }

    }
事件:{
关于:函数(){
对于(var j=0;j
搜索“JavaScript在循环中分配处理程序”或类似内容。这个问题经常被问到。可能重复
events : {

    on : function () {

        for (var j = 0; j < divArray.length; j++){

            (function(i) {

                divArray[i].onmouseover = function(){
                    gala.animate.openAnimation("container" + (i+1));
                }

                divArray[i].onmouseout = function(){
                    gala.animate.shrinkAnimation("container" + (i+1));
                }

            })(j);

        }

    }