我只是試圖動態地添加到窗體內的一個div取決於選中的複選框。因此,我創建了li標籤,然後它們被添加爲父元素內的li
元素,所以它只是一個值列表。我不知道我的代碼出了什麼問題,如果相關複選框未選中,我不知道如何刪除相應的值,以及何時取消選中然後重新檢查複選框,它會一直添加值。動態添加和刪除基於複選框值的元素與DOM
<!DOCTYPE html>
<html>
<head>
\t <title></title>
<style>
input {
margin: 18px;
}
#o {
list-style-type: none;
}
.u {
list-style: none;
}
</style>
</head>
<body style="width: 700px">
<div style="float: left; width: 340px; height: 250px; border: 1px solid black; padding: 20px 0 10px 20px;">
<form id="myForm">
<ul class="u">
<li><input id="showAlert1" type="checkbox" name="thing" value="laptop">laptop</li>
<li><input id="showAlert2" type="checkbox" name="thing" value="iphone">iphone</li>
</ul>
</form>
</div>
<div id="myDiv" style="float: right; width: 317px; height: 250px; border: solid black; border-width: 1px 1px 1px 0; padding: 20px 0 10px 20px;">
<ol id="o">
</ol>
</div>
<script>
document.getElementById('myForm').addEventListener('change', function() {
var a = document.getElementsByName('thing');
for (var i = 0; i < a.length; i++) {
if (a[i].checked){
createDynamicElement();
} else if (!a[i].checked){
removeDynamicElement();
}
}
function createDynamicElement(){
var node = document.createElement("LI");
node.setAttribute("id1", "Hey");
var textnode = document.createTextNode(event.target.nextSibling.data);
node.appendChild(textnode);
document.getElementById("o").appendChild(node);
}
function removeDynamicElement() {
document.querySelector("#o li").innerHTML = "";
}
});
</script>
</body>
</html>
但我想設置序列,當我檢查筆記本電腦和iPhone,然後我不檢查筆記本電腦,再次檢查筆記本電腦,它應該在iphone後打印。 – Bestii
問題在於for循環添加新元素而不檢查li是否已經存在於OL中。 –