<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
function checkSex(){
var sex = document.getElementsByName("rdoSex");
for(var i in sex){alert(i);
if(sex[i].checked == true){
return true;
}
}
/*for(var i=0;i<sex.length;i++){alert(sex[i].checked)
if(sex[i].checked == true){
return true;
}
}*/
alert("请选择性别");
return false;
}
</script>
</head><body>
<form action="" method="post" onsubmit="return checkSex()">
<input name="rdoSex" type="radio" value="" />
<input name="rdoSex" type="radio" value="" /><br/>
<input name="" type="submit" />
</form>
</body>
</html>这段代码使用for则完全正确,使用for...in则出错,alert()出来的结果也很奇怪,这是为什么?for..in在使用中有什么要注意的?求助大家!
function checkSex(){
var sex = document.getElementsByName("rdoSex");
var obj=[];
for(var i=0;i<sex.length;i++)obj.push(sex[i]);
for(var i in obj){alert(i);
if(obj[i].checked == true){
return true;
}
}
/*for(var i=0;i<sex.length;i++){alert(sex[i].checked)
if(sex[i].checked == true){
return true;
}
}*/
alert(" 宣b性+R");
return false;
}
</script>
比較比較
将新元素添加到一个数组中,并返回数组的新长度值。sex 所获取的不是一个对象数组?
费解
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
function checkSex(){
var sex = document.getElementsByName("rdoSex");
for(var i=0;i<sex.length;i++)
{
alert(i);
if(sex[i].checked == true){
return true;
}
}
}
</script>
</head><body>
<form action="" method="post" onsubmit="checkSex()">
<input name="rdoSex" type="radio" value="男" />男
<input name="rdoSex" type="radio" value="女" />女<br/>
<input name="" type="submit" />
</form>
</body>
</html>
var sex = document.getElementsByName("rdoSex");
这个方法返回的是一个sex对象数组啊!
我翻文档翻到的
其实我只想知道这段话。。
我又迷茫了。。
for...in....是用于循环某个对象的属性。
for() 是用于集合(数组)
document.getElementsByName,返回的是Dom数组。而不是一个对象.
document.getElementsByName,返回的是Dom数组。而不是一个对象,它会循环遍历Dom数组里每个对象的属性!
懂了!谢谢3位大大的解答!过段时间结贴!
for (变量 in 对象)
{
在此执行代码
}“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
2、其次getElementsByName返回的并不是Array,而是一个拥有length属性的集合对象,所以for...in 的时候对将他的这个属性也迭代进去了。
3、判断一个对象是否是Array的方法function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}