Javascript函数在for循环中不起作用
我正在尝试使用for循环使javascript代码变小,我是javascript新手,但我认为这会奏效 我想把它缩小一些:Javascript函数在for循环中不起作用,javascript,jquery,function,loops,for-loop,Javascript,Jquery,Function,Loops,For Loop,我正在尝试使用for循环使javascript代码变小,我是javascript新手,但我认为这会奏效 我想把它缩小一些: $("li#li_item1").click(function(){ all(); $("div#item1").fadeIn("fast"); }) $("li#li_item2").click(function(){ all(); $("div#item2").fadeIn("fast"); }) $("li#li_item3"
$("li#li_item1").click(function(){
all();
$("div#item1").fadeIn("fast");
})
$("li#li_item2").click(function(){
all();
$("div#item2").fadeIn("fast");
})
$("li#li_item3").click(function(){
all();
$("div#item3").fadeIn("fast");
})
$("li#li_item4").click(function(){
all();
$("div#item4").fadeIn("fast");
})
使用此选项:
var AantalItem = 159;
for(var k=0;k<=AantalItems;k++) {
$("li#li_item" + k).click(function(){
all();
$("div#item" + k).fadeIn("fast");
})
document.getElementById("test").innerHTML=k;
}
var AantalItem=159;
对于(var k=0;k您可以创建一个返回函数的函数,并将
k
传递给它:
for(var k=0;k<=AantalItems;k++) {
$("li#li_item" + k).click((function(k){
return function() {
all();
$("div#item" + k).fadeIn("fast");
}
})(k));
和html:
<li class="commonClass" data-id="item1">whatever</li>
<li class="commonClass" data-id="item2">whatever</li>
<div class="anotherCommonClassForDivs" id="item1">data for item1</div>
<div class="anotherCommonClassForDivs" id="item2">data for item2</div>
无论什么
无论什么
第1项的数据
第2项的数据
这是由于闭包效应 试试这个:
for(var k=0;k<=AantalItems;k++) {
$("li#li_item" + k).click(createClickFunction(k));
}
function createClickFunction(k) {
return function() {
all();
$("div#item" + k).fadeIn("fast");
}
}
for(var k=0;k试试这个
function fadeinAll() {
$('li#li_item').find('div').each(function () { $(this).fadeIn("fast"); })
}
function fadeoutAll() {
$('li#li_item').find('div').each(function () { $(this).fadeOut("fast"); })
}
当执行click处理程序时,“k”的可能重复总是===AantalItems-1。但是,除此之外,原始代码更易于阅读。缺少一个“;”同样要关闭该功能感谢您的快速响应!但它似乎没有这样做,它也不会再使用HMM淡出它似乎这样做了,但它现在淡出,然后淡入,所以它会双重淡出
for(var k=0;k<=AantalItems;k++) {
$("li#li_item" + k).click(createClickFunction(k));
}
function createClickFunction(k) {
return function() {
all();
$("div#item" + k).fadeIn("fast");
}
}
function fadeinAll() {
$('li#li_item').find('div').each(function () { $(this).fadeIn("fast"); })
}
function fadeoutAll() {
$('li#li_item').find('div').each(function () { $(this).fadeOut("fast"); })
}