Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Id调用数组元素来循环数组元素_Javascript_Jquery_Arrays_Jquery Selectors_Css Selectors - Fatal编程技术网

Javascript 通过Id调用数组元素来循环数组元素

Javascript 通过Id调用数组元素来循环数组元素,javascript,jquery,arrays,jquery-selectors,css-selectors,Javascript,Jquery,Arrays,Jquery Selectors,Css Selectors,如何在包含5个元素的数组上循环。我有5个ID元素,比如imgone、imgtwo、imgtree、imgfour、imgfive var ids = [ "#imgone", "#imgtwo", "#imgthree", "#imgfour", "#imgfive" ]; for (var i = 0; id = ids[i]; i++) { $(id).click(function() { $("#cell1,#cel

如何在包含5个元素的数组上循环。我有5个ID元素,比如imgone、imgtwo、imgtree、imgfour、imgfive

var ids =
[ 
    "#imgone",
    "#imgtwo",
    "#imgthree",
    "#imgfour",
    "#imgfive"
]; 
for (var i = 0; id = ids[i]; i++)
{  
    $(id).click(function() {

        $("#cell1,#cell2,#cell3,#cell4,#cell5").hide(); 
         $("#cell" + (i+1)).show(); 

    });
}
});
然后我有一个5 a标记元素,比如

<a href="#"  id="imgone"><img src ="myimage1" /></a>    
<a href="#"  id="imgtwo"><img src ="myimage2" /></a>    
<a href="#"  id="imgthree"><img src ="myimage3" /></a>    
<a href="#"  id="imgfour"><img src ="myimage4" /></a>    
<a href="#"  id="imgfive"><img src ="myimage5" /></a> 
cell1、cell2等是我的块,我需要在单击元素时显示/隐藏这些块

顺便说一句,这段代码总是隐藏所有单元格块并显示cell6,这在我的代码中并不存在。 我是说$cell+I+1.show;从不将i的值设为0、1、2、3或4


那么我如何迭代数组并显示隐藏单元格呢。我认为这行代码$id.clickfunction有问题,但不知道是什么?

这是一个闭包问题,我指向循环中使用的变量,在执行时它总是6

请改用此代码

for (var i = 0; id = ids[i]; i++)
{  
    var fnc = function(j){
        return function() {
            $("#cell1,#cell2,#cell3,#cell4,#cell5").hide(); 
            $("#cell" + (j+1)).show();
        };
    }(i);
    $(id).click(fnc);
}

有关javascript闭包的更多信息,请参见

这是一个闭包问题,变量i指向循环中使用的i,在执行时它始终为6

请改用此代码

for (var i = 0; id = ids[i]; i++)
{  
    var fnc = function(j){
        return function() {
            $("#cell1,#cell2,#cell3,#cell4,#cell5").hide(); 
            $("#cell" + (j+1)).show();
        };
    }(i);
    $(id).click(fnc);
}

有关javascript闭包的更多信息,请参见

,您可以jquery它:

var ids =
[ 
    "#imgone",
    "#imgtwo",
    "#imgthree",
    "#imgfour",
    "#imgfive"
]; 
$(ids.join(,)).each(function(i){
    $(this).click(function(){
        $("#cell1,#cell2,#cell3,#cell4,#cell5").hide(); 
        $("#cell" + (i+1)).show();
    });
});

您可以jquery它:

var ids =
[ 
    "#imgone",
    "#imgtwo",
    "#imgthree",
    "#imgfour",
    "#imgfive"
]; 
$(ids.join(,)).each(function(i){
    $(this).click(function(){
        $("#cell1,#cell2,#cell3,#cell4,#cell5").hide(); 
        $("#cell" + (i+1)).show();
    });
});

$this.clickfunction{Control永远不会进入这个函数。顺便说一句,这个函数是什么?参数ii是迭代元素的索引。请参阅。为什么你说这个不起作用?因为它不起作用,尽管它应该起作用。为什么我说Control永远不会进入这个函数,因为我在$this.clickfunction后面放了一个简单的alerthi{…它没有被执行。你试过吗?你使用的是什么版本的jquery?我不知道在witch版本的jquery中,选择器数组selector selector引入了$[selector1,selector2,…selectorn],所以你可以试着使用逗号分隔的选择器:$selector1,selector2,…selectorn。请参阅更新$this.clickfunction{Control从来没有进入过这个函数。顺便说一句,这个函数的参数ii是迭代元素的索引。更多信息请参见。你为什么说它不起作用?因为它不起作用,尽管它应该起作用。为什么我说Control从来没有进入过这个函数,因为我在$this.clickfunction后面放了一个简单的alerthi{…它没有被执行。你试过了吗?你用的是什么版本的jquery?我不知道在witch版本的jquery中,选择器数组selector引入了$[selector1,selector2,…selectorn],所以你可以试着使用逗号分隔的选择器:$selector1,selector2,…selectorn。参见更新