数组复选框.检查javascript不工作
array checkbox.checked javascript not working
<form id="form1" name="form_check" method="post" action="">
<p align="center">
<input type="checkbox" name="role[]" value="1">
<input type="checkbox" name="role[]" value="2">
<input type="checkbox" name="role[]" value="3"></p>
<input type="submit" name="Submit" onclick="check_all()">
<script>
function check_all(){
checkedBox="x"
for(var i=0;i<document.getElementsByName('role[]').length;i++){
if(document.getElementsByName('role[i]').checked == true){
checkedBox="y"
break // No need to check the rest since only one can be checked.
}
}
if(checkBox == "x"){
alert("Checkbox not checked")
}
}
</script>
我已经写了上面的代码来检查复选框是否被选中。它不执行JavaScript区域中的if语句。我无法得到输出。当我试图执行这个脚本时,我得到这个错误:
{"error": "Shell form does not validate{'html_initial_name': u'initial-js_lib', 'form': <mooshell.forms.ShellForm object at 0x22c58d0>, 'html_name': 'js_lib', 'html_initial_id': u'initial-id_js_lib', 'label': u'Js lib', 'field': <django.forms.models.ModelChoiceField object at 0x25563d0>, 'help_text': '', 'name': 'js_lib'}{'html_initial_name': u'initial-js_wrap', 'form': <mooshell.forms.ShellForm object at 0x22c58d0>, 'html_name': 'js_wrap', 'html_initial_id': u'initial-id_js_wrap', 'label': u'Js wrap', 'field': <django.forms.fields.TypedChoiceField object at 0x2556cd0>, 'help_text': '', 'name': 'js_wrap'}"}
这个脚本为我工作:
var radios = document.getElementsByName('role[]');
checkedBox = "x";
for (i = 0; i < radios.length; i++) {
if (radios[i].checked) {
//alert("checked: " + radios[i].value);
checkedBox = "y";
break; // No need to check the rest since only one can be checked.
}
}
-
您声明了一个变量
checkedBox
,但在if
条件下您使用的是checkBox
-
document.getElementsByName('role[i]')
将为空,因为没有匹配的元素。(document.getElementsByName('role[' + i + ']')
也将为null,原因相同。)
你真正需要使用的是
document.getElementsByName('role[]')[i].checked.
但是像这样在循环中访问DOM
不是一个好的做法,最好将htmlCollection存储在一个变量中。
function check_all() {
checkedBox = "x";
var checkboxes = document.getElementsByName('role[]');
for (var i = 0; i < checkboxes.length; i++) {
if ( checkboxes[i].checked) {
checkedBox = "y"
break // No need to check the rest since only one can be checked.
}
}
if (checkedBox == "x") {
alert("Checkbox not checked");
return false;
}
}
JSFiddle
指出:
- 恕我直言,使用
boolean
值作为标志比x
,y
等更好的可读性和可理解性是一个很好的做法… - 您没有关闭共享代码中的
<form>
标签…
我想你会希望i
不是一个文字I:
if(document.getElementsByName('role[' + i + ']').checked == true){
您总是可以使用console.log
作为调试辅助来查找这些类型的错误。
相关文章:
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 变量只能在函数中局部工作,不能全局工作-Javascript
- onClick按钮不工作javascript/php/jquery mobile
- 点击骰子赢得't工作(javascript)
- for循环,if else不工作Javascript
- 获取下一个不工作Javascript DOM的同级父节点的子节点
- 可以'没有一个函数可以工作——Javascript
- OnFocus 不是工作 JavaScript HTML;不显示对焦时计算和按钮单击时
- 从 iframe 访问主站点中的工作 JavaScript
- 对于在循环中无法按预期工作 JavaScript
- 在阅读表单输入后写回HTML;t工作(Javascript)
- 复选框单击有效,取消选中复选框不工作Javascript
- 代码在Codepen中工作,而不是在浏览器中工作:JavaScript在鼠标滚轮上缩放SVG
- 当用户在这个工作javascript注释框中提交注释时,您将如何添加用户图像和名称
- 向Wordpress添加工作Javascript谷歌地图代码
- 确认/重定向功能不工作-javascript
- 当/patt/版本工作时,为什么RegExp版本不工作?(Javascript)
- Firefox加载项按钮代码不工作-Javascript
- 计算器功能不工作- Javascript
- 将工作JavaScript对象序列化为仅保留属性的JSON