【发布时间】:2014-03-31 07:09:32
【问题描述】:
我正在尝试将 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);
}
}
},
分配事件:
events : {
on : function () {
var z = 1;
for (var i = 0; i < divArray.length; i++){
var cont = ("container" + z);
document.getElementById(divArray[i].id).onmouseover = function(){
gala.animate.openAnimation(cont);
}
document.getElementById(divArray[i].id).onmouseout = function(){
gala.animate.shrinkAnimation(cont);
}
console.log(cont);
z++;
}
}
控制台显示数组按预期按 div 数排序,cont 变量++ 增加以分配 id。但是最后,事件侦听器仅应用于数组的最后一个元素。
顺便说一句,cont 变量只是传递动画方法的参数的占位符,因此它知道要为哪个 div 设置动画,这意味着 animat.openAnimation(cont) cont = div 名称。
【问题讨论】:
-
搜索“JavaScript 在循环中分配处理程序”或类似内容。这个问题被问了很多。
标签: javascript arrays dom-events