<form name="theform">
<input type='checkbox' name='Id' value="1">
<input type='checkbox' name='Id' value="2">
<input type='checkbox' name='Id' value="3">
<input type='checkbox' name='Id' value="4">
</form>
script language="javascript"
selNum=document.getElementById("theform").Id.length
/scriptIE 浏览器可以正确得到复选框的数量,但是Firefox浏览器却不行。
<input type='checkbox' name='Id' value="1">
<input type='checkbox' name='Id' value="2">
<input type='checkbox' name='Id' value="3">
<input type='checkbox' name='Id' value="4">
</form><script language="javascript">
selNum=document.getElementById("theform").getElementsByTagName('input').Id.length
</script>
document.write (selNum);
试了一下,IE能出来,但是Firefox还是不行!
<input type='checkbox' name='Id' value="1">
<input type='checkbox' name='Id' value="2">
<input type='checkbox' name='Id' value="3">
<input type='checkbox' name='Id' value="4">
<input type="button" name="bu" value="tijiao" onclick="getChks();"/>
</form>
<script>
function getChks(){
var chkNum = 0;
var chkEl = document.getElementsByName("Id");
for(i =0;i<chkEl.length;i++){
if(chkEl[i].checked){
chkNum ++;
}
}
document.write(chkNum);
}
</script>
1.id , name都要 加上,因为ie认id,ff认name,之所以你现在没有加还是能认是因为ie默认id=name
2.checkbox的name和id不能一样。name一样的那是radio.我知道你可能是想名字一样,认识成数组方便。
那为什么不
var checkboxs = document.getElementsByTagName();for (var index = 0; index < checkboxs.length; index++) {
if (checkboxs[index].type == 'checkbox') {
checkboxs[index].checked = true;
}
}
selNum=document.theform.Id.length
num = document.form1.name1.length;
IE和firefox通用
这个写法,IE下其实也很容易出问题!
<form name="theform" method="post" action="1.asp">
<input type='checkbox' name='Id' value="1">1<br />
<input type='checkbox' name='Id' value="2">2<br />
<input type='checkbox' name='Id' value="3">3<br />
<input type='checkbox' name='Id' value="4">4<br />
</form>num = document.theform.Id.length
num = document.getElementsByName("name1").length请问一下,哪种写法来得“标准”呢?
当只有一个checkbox的时候,浏览器不认为是数组。.length报错lz的代码也有相同问题。
<!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=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function load() {
alert(document.form1.check.length);
}
</script>
</head>
<body onload="load();">
<form name="form1">
<input type="checkbox" name="check" ></input>
</form>
</body>
</html>两个以上的时候
<!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=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function load() {
alert(document.form1.check.length);
}
</script>
</head>
<body onload="load();">
<form name="form1">
<input type="checkbox" name="check" ></input>
<input type="checkbox" name="check" ></input>
</form>
</body>
</html>
w3c的写法最通用
但是getElementsByName不能精确到tag,只能document.getElementsByTagName,可以精通到tag.var container = ....//document.getElementById('theform');等var checkboxs = container.getElementsByTagName('INPUT');for (var index = 0; index < checkboxs.length; index++) {
if (checkboxs[index].type == 'checkbox') {
checkboxs[index].checked = true;
}
}
试验了一下,果然报错:Undefined。谢谢提醒
采用 document.getElementsByName("name1") ,则正确识别为 1