如何在 javascript for 循环中从数组输出元素
How do I output an element from an array in a javascript for loop?
演示: http://jsfiddle.net/gc9S3/10/
对于数组中的每一行,我希望"for"循环输出一个[i]元素。例如,我希望下面的javascript在UI中吐出以下内容:
123
(当然,每个数字都将包装在div 标签中。
但是,正如您从 JSFiddle 演示中看到的那样,只有数组中最后一个元素中的元素被吐出!我的"for"循环有问题吗?
var myArray = [
['stringa', 'stringb', 'stringc', 1],
['stringd', 'stringe', 'stringf', 2],
['stringg', 'stringh', 'stringi', 3]
];
for (var i=0; i< myArray.length; i++) {
$('#container').html('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
}
<div id="container"></div>
替换每次迭代时的所有内容,需要追加新元素。
$('#container').append('<div class="hidden caption' + i + '">' + myArray[i][3] + '</div>');
您的问题是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.
演示
正如@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);
更新的 JSFiddle
相关文章:
- PHP中的数组输出
- 如何将javascript数组输出到表中
- 如何将JavaScript数组输出到HTML链接
- 需要javascript函数的数组输出
- 从javascript数组输出随机项
- 带有数字的字符串数组输出
- Mirth 连接错误:“..不是 XML 对象“时尝试从数组输出文本
- 如何在 javascript for 循环中从数组输出元素
- 不断出现逻辑错误,将我的数组输出减少到一堆零
- 向序列化数组输出添加新行
- PHP数组输出到javascript函数
- 使用JS从数组输出随机图像
- 从字节数组输出PHP格式的PDF
- MustacheJavaScript:循环对象数组输出
- 如何使数组输出使用A面文本而不是B面文本
- 如何在java8中获得js函数的数组输出
- PHP到JSON数组输出是错误的
- 从数组输出键
- 不能显示数组输出
- 从多维数组输出的数据属性选择器