为什么这个Javascript For循环不显示单独的列表项?
Why is this Javascript For Loop not displaying individual list items?
我是新的Javascript,不能弄清楚为什么当这个for循环运行时,它只显示一个列表项目与数组的所有内容?
var items = [];
function additem() {
var item = document.getElementById("item_to_add").value;
items.push(item);
console.log("Item " + item + " added!");
for(i = 0; i < items.length; i++) {
document.getElementById("items").innerHTML = "<li>" + items[i] + "</li>";
}
}
我本以为它会像这样显示每个列表项:
而不是:
下面是HTML:
<body>
<h1>To Do List</h1>
<label>Enter Item to Add: </label>
<input type="text" id="item_to_add">
<button onclick="additem()">Add Item</button>
<div class="list">
<ul id="items">
</ul>
</div>
<script src="javascript.js"></script>
</body>
请先确认items
是UL
的HTML元素:
var items = [], $ = function(id) {
return document.getElementById(id);
};
function additem() {
var item = $("item_to_add").value, html = '', i = 0;
// Check duplicate before appending
if (items.indexOf(item) !== -1) {
return;
}
items.push(item);
console.log("Item " + item + " added!");
for(; i < items.length; i++) {
html += "<li>" + items[i] + "</li>";
}
$("items").innerHTML = html;
}
这是因为在for循环的每次迭代中都替换了整个列表的内容。
document.getElementById("items").innerHTML = "<li>" + items[i] + "</li>";
需要替换为
document.getElementById("items").innerHTML += "<li>" + items[i] + "</li>";
您可以在每个循环迭代中添加换行符,例如:
for(i = 0; i < items.length; i++) {
document.getElementById("items").innerHTML = "<li>" + items[i] + "</li>" + "<br>" ;
}
相关文章:
- (取消)使用单独的复选框激活复选框列表
- Codrops页面转换.如何创建单独的按钮,而不是列表项目的效果
- 使用Angular排序到单独的列表中
- Vue.js"track-by-$index”;,如何单独呈现列表项
- 使用php创建的下拉列表中的选择单独填充文本区域
- 角度过滤器ng重复到单独的列表中
- 尝试将长列表排序为单独的列
- 将单个 json 拆分为单独的列表
- 使用 C# MVC 将值列表放入单独的文本框中
- 如何在C# MVC的VIew中将列表数组拆分为单独的数组
- 如何制作一个项目列表,可以使用 Angular JS 单独切换
- 根据一个子jQuery单独隐藏下拉列表
- 分开一个段落列表,给每个单词单独的CSS
- 如何以大写字母单独显示下拉列表的选定值
- 嵌套列表-在单独的一行上显示每个ul级别
- 使用jquery填充UL列表,但不调用单独的JavaScript函数
- 如何将参数的字符串列表传递给函数,并将它们作为单独的参数分配
- React / Redux—假设我们有两个单独的待办事项列表,已完成的和未完成的
- 使用jQuery在单独的无序列表中查找具有匹配类名的列表项
- AngularJS:使用列表项作为单独列表的变量