【发布时间】:2020-02-19 09:45:35
【问题描述】:
我有以下循环:
var array = ["Value 1", "Value 2", "Value 3"];
var textArray = ["Text 1", "Text 2", "Text 3"];
var html = "";
for (let i = 0; i < array.length; i++) {
var html = "<div class='group' data-department='"+array[i]+"'>";
html += "<div class='title'>" + textArray[i] + "</div>";
html += "</div>";
}
这个JS的输出是:
<div class="group" data-department="Value 3">
<div class="title">Text 3</div>
</div>
<div class="group" data-department="Value 3">
<div class="title">Text 3</div>
</div>
<div class="group" data-department="Value 3">
<div class="title">Text 3</div>
</div>
我追求的是:
<div class="group" data-department="Value 1">
<div class="title">Text 1</div>
</div>
<div class="group" data-department="Value 2">
<div class="title">Text 2</div>
</div>
<div class="group" data-department="Value 3">
<div class="title">Text 3</div>
</div>
console.log("Value: " + array[i]); 返回:
Value: Value 1
Value: Value 2
Value: Value 3
然后console.log("Text: " + textArray[i]); 返回:
Text: Text 1
Text: Text 2
Text: Text 3
不确定为什么我的标记是根据数组中的最后一项呈现的?
从循环中删除 var 后,我得到以下结果(容器 div 相互嵌套):
var html = "";
for (let i = 0; i < array.length; i++) {
html += "<div class='group' data-department='"+array[i]+"'>";
html += "<div class='title'>" + textArray[i] + "</div>";
html += "</div>";
}
<div class="group" data-department="Value 1">
<div class="title">Text 1</div>
<div class="group" data-department="Value 2">
<div class="title">Text 2</div>
<div class="group" data-department="Value 3">
<div class="title">Text 3</div>
</div>
</div>
</div>
【问题讨论】:
-
因为你每次都在重置你的变量:
var html = "<div class='group' data-department='"+array[i]+"'>"; -
只需从 `var html = "" 中删除 var ` 除此之外,我建议更多地了解 let、const、var。如何使用它以及在哪里使用它。
标签: javascript arrays