问答详情
源自:9-4 区别getElementByID,getElementsByName,getElementsByTagName

求教,一个大括号引发的问题

大括号的位置

一,不可以执行的版本,

     function checkone(){
            var hobby = document.getElementsByName("hobby");
            for(var o=1;o<=hobby.length;o++){
                hobby[o].checked=false;
            
            }
        
            var u=document.getElementById("wb").value;
            
                hobby[u].checked=true;
            
 
            }


二 可以执行的版本

 function checkone(){
            var hobby = document.getElementsByName("hobby");
            for(var o=1;o<=hobby.length;o++){
                hobby[o].checked=false;
            
          
        
            var u=document.getElementById("wb").value;
            
                hobby[u].checked=true;
             }
       
            }



我自己写的是一,  清除完再选定。我在哪里出错了,求教

提问者:慕圣8408166 2018-07-11 11:11

个回答

  • 慕尼黑7463522
    2018-07-12 22:12:07
    已采纳

    function checkone(){ 
        var hobby = document.getElementsByName("hobby");         
        for(var o=0;o<hobby.length;o++){                 //不应该小于等于,直接小于就可以了
            hobby[o].checked=false;
        }      
        var u=document.getElementById("wb").value - 1;   //数组下标从0开始,所有正常执行时,应该是1(后台需要处理成0)     
        hobby[u].checked=true;

    这个代码是你的第一个版本(不可以执行的版本)修改过来,你的逻辑没问题;

    注释的两个地方,我已经写出来:

    注释1:之所以失败,是因为你用了<=,直接导致后边的代码不起作用,也就是执行了循环后就结束了;

    注释2:数组下标从0开始,表面上看 1.音乐 ~ 6.跑步,但实际上后台数组对应下边应该是 0.音乐 ~ 5.跑步,获取值那里必须手动减 1

  • Geek攻城猫
    2018-07-12 19:25:07

    function checkone(){
                var hobby = document.getElementsByName("hobby");

                var u=document.getElementById("wb").value;

                for(var o=1;o<=hobby.length;o++){
                    hobby[o].checked=false;
                    hobby[u].checked=true;
                 }
            
          }

    写法不规范,没有弄清楚哪些该循环,哪些不该