簡體   English   中英

添加新復選框將其他復選框取消選中

[英]Adding a new checkbox makes the other checkboxes unchecked

當我添加新復選框時,會將舊復選框設置為未選中狀態(即使已選中)。 我該如何解決?

這是我的代碼:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function zaza() {
    document.body.innerHTML+=
        '<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>';
}

</script>
</head>
<body>
<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
<p onclick="zaza()">add</p>
</body>
</html>

問題是您重寫正文html:

document.body.innerHTML+=

而是嘗試將復選框附加到正文。

 function zaza() { var div = document.createElement('div'); div.innerHTML = '<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>'; document.body.appendChild(div); } 
 p { cursor: pointer; } 
 <input type="checkbox" name="vehicle" value="Bike">I have a bike <br> <p onclick="zaza()">add</p> 

您也可以使用文檔片段:

 function zaza() { var child = document.createDocumentFragment(); var tmp = document.createElement('input'); tmp.type = 'checkbox'; tmp.name = 'vehicle'; tmp.value = 'Bike'; child.appendChild(tmp); child.appendChild(document.createTextNode('I have a bike')); child.appendChild(document.createElement('br')); document.body.appendChild(child); } 
 p { cursor: pointer; } 
 <input type="checkbox" name="vehicle" value="Bike">I have a bike <br> <p onclick="zaza()">add</p> 

您要添加具有相同名稱的復選框,必須為每個復選框指定不同的名稱

您需要創建元素並追加到正文中

function zaza() {
    var answer = document.createElement('input');
    answer.setAttribute('type', 'checkbox');
    answer.setAttribute('id', 'answer');
    answer.setAttribute('value', 'a');
    var answerLabel = document.createElement('label');
    answerLabel.setAttribute('for', 'answer'); // this corresponds to the checkbox id
    answerLabel.appendChild(answer);
    answerLabel.appendChild(document.createTextNode(' I have a bike'));
    document.body.appendChild(answerLabel);
    linebreak = document.createElement("br");
    answerLabel.appendChild(linebreak);
}

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM