Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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 for循环中从数组输出元素?_Javascript_Jquery - Fatal编程技术网

如何在javascript for循环中从数组输出元素?

如何在javascript for循环中从数组输出元素?,javascript,jquery,Javascript,Jquery,演示: 对于数组中的每一行,我希望“For”循环输出一个[I]元素。例如,我希望下面的javascript在UI中显示以下内容: 一, 2. 三, (当然,每个数字都将被包装在一个div标记中。) 但是,正如您从JSFIDLE演示中看到的,只有数组中最后一个元素的元素被吐出!我的“for”循环有什么问题吗 var myArray=[ ['stringa','stringb','stringc',1], [stringd',stringe',stringf',2], [stringg',strin

演示:

对于数组中的每一行,我希望“For”循环输出一个[I]元素。例如,我希望下面的javascript在UI中显示以下内容:

一, 2. 三,

(当然,每个数字都将被包装在一个div标记中。)

但是,正如您从JSFIDLE演示中看到的,只有数组中最后一个元素的元素被吐出!我的“for”循环有什么问题吗

var myArray=[
['stringa','stringb','stringc',1],
[stringd',stringe',stringf',2],
[stringg',stringh',stringi',3]
];
对于(var i=0;i
如果在每次迭代中替换所有内容,则需要附加新元素

$('#container').append('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
$('#container').append(''+myArray[i][3]+'');

如果在每次迭代中替换所有内容,则需要附加新元素

$('#container').append('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
$('#container').append(''+myArray[i][3]+'');

您的问题是
html
v/s
append
。但是你可以这样试试。不要在每次迭代中都执行多个DOM操作,而是在迭代结束时执行该操作,这样肯定会执行得更好,尤其是当数组中有很多项时

var myArray = [
      ['stringa', 'stringb', 'stringc', 1],
      ['stringd', 'stringe', 'stringf', 2],    
      ['stringg', 'stringh', 'stringi', 3]
    ];

var $els = $.map(myArray, function(val, i){ //Convert one collection collection to another using map
  return '<div class="hidden caption' + i + '">' + val[3] + '</div>';
});

$('#container').html($els); //append it at the end.
var myArray=[
['stringa','stringb','stringc',1],
[stringd',stringe',stringf',2],
[stringg',stringh',stringi',3]
];
var$els=$.map(myArray,function(val,i){//使用map将一个集合转换为另一个集合
返回''+val[3]+'';
});
$('#container').html($els)//在末尾附加它。

您的问题是
html
v/s
append
。但是你可以这样试试。不要在每次迭代中都执行多个DOM操作,而是在迭代结束时执行该操作,这样肯定会执行得更好,尤其是当数组中有很多项时

var myArray = [
      ['stringa', 'stringb', 'stringc', 1],
      ['stringd', 'stringe', 'stringf', 2],    
      ['stringg', 'stringh', 'stringi', 3]
    ];

var $els = $.map(myArray, function(val, i){ //Convert one collection collection to another using map
  return '<div class="hidden caption' + i + '">' + val[3] + '</div>';
});

$('#container').html($els); //append it at the end.
var myArray=[
['stringa','stringb','stringc',1],
[stringd',stringe',stringf',2],
[stringg',stringh',stringi',3]
];
var$els=$.map(myArray,function(val,i){//使用map将一个集合转换为另一个集合
返回''+val[3]+'';
});
$('#container').html($els)//在末尾附加它。

正如@epascarello提到的那样,每次迭代都会覆盖html

此外,您应该尽可能避免对DOM进行更改。在本例中,将标记存储在变量中,并在for循环之后更新DOM。解决您的问题,再加上仅1个DOM更改

var html = '';
for (var i=0; i< myArray.length; i++) {
    html += '<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>';
}
$('#container').html(html);
var html='';
对于(var i=0;i

正如@epascarello提到的,每次迭代都会覆盖html

此外,您应该尽可能避免对DOM进行更改。在本例中,将标记存储在变量中,并在for循环之后更新DOM。解决您的问题,再加上仅1个DOM更改

var html = '';
for (var i=0; i< myArray.length; i++) {
    html += '<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>';
}
$('#container').html(html);
var html='';
对于(var i=0;i

嗨,谢谢你的回答。我以前从未用过。@LNA不客气。当你想把一个收藏转换成另一个收藏时,它总是很有用的。嗨,谢谢你的回答。我以前从未用过。@LNA不客气。当您要将一个集合转换为另一个集合时,它总是很有用。。