function handleCheckboxClick(event){
if(document.getElementById(event.target.id).checked){
document.getElementById(event.target.id.concat("_visible")).setAttribute("checked", "true");
console.log(document.getElementById(event.target.id.concat("_visible")));
}
}
var requiredCheckboxes = document.getElementsByClassName("checkbox_required");
for (var i = 0, max = requiredCheckboxes.length; i < max; i++){
requiredCheckboxes[i].addEventListener('click', handleCheckboxClick);
}
<table>
<tr>
<th>
Property
</th>
<th>
Visible
</th>
<th>
Required
</th>
</tr>
<tr>
<td>
Email
</td>
<td>
<input type="hidden" name="_email_visible" /><input type="checkbox" name="email_visible" id="donation_email_visible" />
</td>
<td>
<input type="hidden" name="_email" /><input type="checkbox" name="email" class="checkbox_required" id="donation_email" />
</td>
</tr>
</table>
首先,点击电子邮件所需的复选框。正如预期的那样,还会检查可见框。现在,勾选可见框并单击对应于电子邮件的必填复选框,该复选框将检查电子邮件所需的框。现在再次单击所需的电子邮件复选框,将不会选中可见复选框。所以,这就是我的困境所在。在第二次点击需要时,为什么不检查可见框?我感谢您的帮助!谢谢!
答案 0 :(得分:6)
checked
属性确定复选框的默认状态。使用JS更改它只会改变复选框的当前状态,如果用户没有修改它。
checked
属性确定复选框的当前状态。请改用它。
即
将setAttribute("checked", "checked")
(nb:true
不是该属性的有效值)的任何实例更改为checked = true
以及removeAttribute("checked")
到checked = false
的所有实例