【发布时间】:2014-03-03 17:23:16
【问题描述】:
我试图在选中列表中的项目然后单击删除按钮时删除它们。我认为我的问题可能出在 removeItem 函数中。 var x = document.getElementById("items-listed <li>"); 因为当我删除 <li> 时,整个列表都会被删除。
<div>
<div id="center-container">
<h4>Enter an Item for Your Shopping List:</h4>
<hr />
<form name="form">
<label for="item">Item:</label>
<input type="text" placeholder="Shopping Items" id="item" name="itemEntered" />
<input type="button" value="Enter" id="Enter" onclick="javascript:addItem();" />
</form>
</div>
</div>
<div>
<div id="items-container">
<h4>Your list of Items:</h4>
<form>
<input type="button" value="Remove selected items" onclick="javascript:removeItem();" />
</form>
<hr />
<ul id="items-listed">
</ul>
</div>
</div>
function addItem() {
var item = [];
item = document.getElementById('items-listed');
item.innerHTML += "<li><input type='checkbox'>" + document.form.itemEntered.value + "</li>";
}
function removeItem () {
var x = document.getElementById("items-listed <li>");
x.remove();
}
【问题讨论】:
-
你认为这是一个 id 吗:
"items-listed <li>"? -
items-listed 是一个 id,但
- 指的是标签。
-
"
id是一个区分大小写的字符串,表示正在查找的元素的唯一 ID。" :developer.mozilla.org/en-US/docs/Web/API/… -
您可以使用:document.querySelectorAll('#items-listed li input:checked') 来获取所有选中的复选框。但 querySelectorAll 仅限于新浏览器。检查此页面的浏览器兼容性developer.mozilla.org/en-US/docs/Web/API/…
-
@ManuelRicharz 该解决方案似乎更简洁,更易于理解,但我使用的是 Chrome,它不会删除选中的项目。
标签: javascript html forms list button