var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}Run Code Online (Sandbox Code Playgroud)
它输出这个:
我的价值:3
我的价值:3
我的价值:3
而我希望它输出:
我的价值:0
我的价值:1
我的价值:2
使用事件侦听器导致运行函数的延迟时,会出现同样的问题:
var buttons = document.getElementsByTagName("button");
// let's create 3 …Run Code Online (Sandbox Code Playgroud)好吧,我已经尝试了多种方法,并寻找答案,我似乎无法让它工作.我想要做的是有一些动态生成的图像,所以我不知道随时会有多少图像.每个图像都有一些相关的信息,我存储在一个单独的div中.我想要做的是将click事件附加到每个图像,该事件将取消隐藏其中包含相关内容的div.
我尝试使用for循环和while循环进行循环,但无济于事.两者都发生了什么,它们将点击事件附加在一起,但无论点击图像,同样的div总是打开,没有与图像相关联的div.
var cnt = jQuery('#container img').length;
cnt = cnt - 1;
var i = 0
for(i=0; i<=cnt; i++) {
jQuery('#container img').eq(i).click(function() {
jQuery('.movie' + 1).slideDown();
jQuery('#sort').hide();
});
}
while(i<=cnt) {
jQuery('#container img').eq(i).click(function() {
jQuery('.movie' + i).slideDown();
jQuery('#sort').hide();
});
i++
Run Code Online (Sandbox Code Playgroud)
}
以上是我尝试过的两种不同的变化.第二个没有在这里定义的变量,但在我的代码中他们做了.我正在做的是计算我有多少图像(var cnt),然后使用它来循环正确的次数.我假设必须在点击功能中弄乱一些东西,因为它将它附加到每个图像中,但得到错误的div.
编辑:
根据一些评论,我尝试将我的结构更改为:
<div id="container">
<img />
<img />
<div class="expanded">
// Info Goes Here
</div>
<div class="expanded">
// Info Goes Here
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我尝试了代码:
jQuery(document).ready(function() {
jQuery('#container img').click(function () {
jQuery(this).next('div.expanded').show();
});
});
Run Code Online (Sandbox Code Playgroud)
但它也不起作用.第一个图像什么都不做,第二个图像显示错误的div.