复选框未在javascript中检查?

时间:2015-12-03 08:09:51

标签: javascript

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>

首先,点击电子邮件所需的复选框。正如预期的那样,还会检查可见框。现在,勾选可见框并单击对应于电子邮件的必填复选框,该复选框将检查电子邮件所需的框。现在再次单击所需的电子邮件复选框,将不会选中可见复选框。所以,这就是我的困境所在。在第二次点击需要时,为什么不检查可见框?我感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:6)

checked 属性确定复选框的默认状态。使用JS更改它只会改变复选框的当前状态,如果用户没有修改它。

checked 属性确定复选框的当前状态。请改用它。

setAttribute("checked", "checked")(nb:true不是该属性的有效值)的任何实例更改为checked = true以及removeAttribute("checked")checked = false的所有实例