我有4个checkbox  有一个的功能是选中那么其他的就都选中
我的代码
var selectedboxes  = document.getElementsByName("selectFlag");
var i;
for(i in selectedboxes){
selectedboxes[i].checked = true;
}
为啥子用for in循环就不行喃改成这样:
var selectedboxes  = document.getElementsByName("selectFlag");
for(var i = 0;i < selectedboxes.length;i++){
selectedboxes[i].checked = true;
}
为啥子就可以了
求大神详细解释,本人新手

解决方案 »

  1.   

    for-in原型:for(property in expression) statement
      

  2.   

    for in 遍历的不是数组,而是那个对象
    其实访问的是对象的属性,而不是你认为的数组的元素
      

  3.   

    var  selectedboxes = new Array(document.getElementsByName("selectFlag")[0],document.getElementsByName("selectFlag")[1],document.getElementsByName("selectFlag")[2],document.getElementsByName("selectFlag")[3]);你那个selectedboxes不是数组,是对象,那么 i 就是对象的属性,比如 name,length等。而不是 0 1 2 3
      

  4.   

    for in语句是遍历对象中的所有属性,而一个数组对象有name,length属性等。问题就在于此。
      

  5.   

    数组元素只能通过下标访问,for in 是访问对象的所有属性,并不能用来访问数组元素。
      

  6.   

    for in可以遍历数组。在js中,数组和对象并没有太多的区别,分别代表了有序集合和无序唯一的集合。
    for in DOM数组在chrome和FF中是可以的。楼主的for in遍历,在火狐和chrome中是有效的,ie下无效。主要是因为IE对dom数组的处理和其他浏览器不一样在FF中,selectedboxed这个dom集合为:
    在IE9中,selectedboxed为:然而在IE9中,selectedboxed[0]又是有效的,FF和IE9中的selectedboxed都是有length属性的。这不禁让我想起function的arguments属性,也是个像数组却又不是数组的奇葩......希望有人对dom集合和arguments做出更为有说服力的解释。