下列js代码中checkone()函数代码块求解!

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>DOM 全选、取消全选</title>
    </head>
    
    <body>
        <form>
          请选择你爱好:<br>
          <input type="checkbox" name="hobby" id="hobby1">  音乐
          <input type="checkbox" name="hobby" id="hobby2">  登山
          <input type="checkbox" name="hobby" id="hobby3">  游泳
          <input type="checkbox" name="hobby" id="hobby4">  阅读
          <input type="checkbox" name="hobby" id="hobby5">  打球
          <input type="checkbox" name="hobby" id="hobby6">  跑步 <br/>
          <input type="button" value = "全选" onclick = "checkall();">
          <input type="button" value = "全不选" onclick = "clearall();">
          <p>请输入您要选择爱好的序号,序号为1-6:</p>
          <input id="wb" name="wb" type="text" >
          <input name="ok" type="button" value="确定" onclick = "checkone();">
        </form>
        <script type="text/javascript">
            
        function checkall(){
            var hobby = document.getElementsByName("hobby");
            for(var i=0;i<hobby.length;i++){
                hobby[i].checked=true;  //复选框选中状态
                
            }
           
        }
        function clearall(){
            var hobby = document.getElementsByName("hobby");
            //alert(hobby.length);
            for(var i=0;i<hobby.length;i++){
                hobby[i].checked=false;
            }
            
        }
        
        function checkone(){  //这段代码的理解 ???
            clearall();
            var hobby = document.getElementsByName("hobby");
            var j=document.getElementById("wb").value;
            for(var i=0;i<j.length;i++){
                if(j.charAt(i)>6 || j.charAt(i)<1){
                    alert("越界,请重新输入!");
                    document.getElementById("wb").value="";
                }
            }
                for(var n=0;n<j.length;n++){
                   
                        hobby[(j.charAt(n))-1].checked=true; 
                }

            
            
        }
        
        </script>
    </body>
</html>

如上,代码中checkone()函数代码块求解!尤其是for循环中的语句,有点迷。。。

阅读 2.3k
2 个回答
function checkone() {
    clearall(); // 选一个之前先清空所有已选
    var hobby = document.getElementsByName("hobby"); // 所有爱好的 array
    var j = document.getElementById("wb").value; // 输入框里爱好的 index
    for (var i = 0; i < j.length; i++) { // 有可能输入的值是 136,此时就该勾选第1、3、6项
        if (j.charAt(i) > 6 || j.charAt(i) < 1) { // 判断越界
            alert("越界,请重新输入!");
            document.getElementById("wb").value = ""; // 越界后提示并重制状态
        }
    }
    for (var n = 0; n < j.length; n++) {
        hobby[(j.charAt(n)) - 1].checked = true; // 通过所有判断后勾选值
    }
}

有可能输入值是432,那就该勾选第2、3、4项

        function checkone(){  //这段代码的理解 ???
            clearall();
            var hobby = document.getElementsByName("hobby");
            var j=document.getElementById("wb").value;
            //输入多个字节 如果有一个出错清空
            for(var i=0;i<j.length;i++){
                if(j.charAt(i)>6 || j.charAt(i)<1){
                    alert("越界,请重新输入!");
                    document.getElementById("wb").value="";
                    return;//加个return
                }
            }
            //输入多个字节 每个字节设置为选中
                for(var n=0;n<j.length;n++){
                   
                        hobby[(j.charAt(n))-1].checked=true; 
                }

            
            
        }

哪里迷,这代码有问题,不符合规则还继续执行,会报错的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题