函数内调用其他函数的时候为什么没有执行呢?还有一些其他的问题,详请看备注

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>无标题文档</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.getElementsByTagName("input");
            for(i=0;i<hobby.length;i++){
                if(hobby[i].type=="checkbox"){
                    hobby[i].checked=true;
                }
            }
          // 任务1    
        }
        function clearall(){
            var hobby = document.getElementsByName("hobby");
            for(i=0;hobby.length;i++){
                if(hobby[i].type=="checkbox"){
                    hobby[i].checked=false;
                };
            
            }
         // 任务2     
        }
        
        function checkone(){
            var j=document.getElementById("wb").value;
            var hobby = document.getElementsByName("hobby");//这句不能少,要不系统不知道hobby.是什么东西
            if(j>6||j<0){
                alert("请确认输入的值!")                
            }
            else{
            //我这里要写的是
            //A:实现1,3这种识别方法,识别第一个和第三个选框??????????
            //B:若有勾已经被选中了,则去除那个才选中别的            
                //clearall();//在执行输入框选择前先清除先前的选择,但是一运行这句话后hobby[j-1].
                //checked=true就不起作用了,为什么?
                hobby[j-1].checked=true;//
                console.log(hobby[j-1]); //这里也不显示相关信息,不知道哪里用错了?            
            }
         // 任务3
        
        }
        
        </script>
    </body>
</html>

我想问的问题在function checkone()里都有备注,请高人帮忙理一下我的思路,自己是在找不到问题原因。谢谢



uwenhao2008
浏览 1652回答 3
3回答

qq_曾谭娥_0

<script type="text/javascript">        function checkall(){            var hobby = document.getElementsByTagName("input");            for(i=0;i<hobby.length;i++){                if(hobby[i].type=="checkbox"){                    hobby[i].checked=true;                }            }          // 任务1            }        function clearall(){            var hobby=[];            var input = document.getElementsByTagName("input");            for(var i=0;i<input.length;i++){            if(input[i].getAttribute('name')=='hobby'){            hobby.push(input[i])            }            }            for(i=0;i<hobby.length;i++){                if(hobby[i].type=="checkbox"){                    hobby[i].checked=false;                };                         }         // 任务2             }                 function checkone(){            var j=document.getElementById("wb").value;            var input = document.getElementsByTagName("input");//这句不能少,要不系统不知道hobby.是什么东西            var hobby=[];            for(var i=0;i<input.length;i++){            if(input[i].getAttribute('name')=='hobby'){            hobby.push(input[i])            }            }            if(j>6||j<=0){                console.log("请确认输入的值!")                            }            else{            //我这里要写的是            //A:实现1,3这种识别方法,识别第一个和第三个选框??????????            //B:若有勾已经被选中了,则去除那个才选中别的                            clearall();//在执行输入框选择前先清除先前的选择,但是一运行这句话后hobby[j-1].                //checked=true就不起作用了,为什么?                hobby[j-1].checked=true;                console.log(hobby[j-1]); //这里也不显示相关信息,不知道哪里用错了?                        }         // 任务3                 }                 </script>获取的input name=hobby方法不是很对

ppo_YXWU

你的clearall函数里的for(i=0;hobby.length;i++){改为for(i=0;i<hobby.length;i++){然后你现在实现的识别只能单选的1-6,如果用1,3这种形式就会,因为j='1,3'出现无法识别hobby[j-1]的错误。如果要多选,checkone函数要改成:        function checkone(){             var j=document.getElementById("wb").value;             var hobby = document.getElementsByName("hobby");//这句不能少,要不系统不知道hobby.是什么东西             //j得到的是1,3,4这样的字符串             if(j=='')               alert("请确认输入的值!");             else{               var str=j.split(',');//通过分割','符号分割成数组[1,3,4]               clearall();               for(var i=0;i<str.length;i++){                 if(0<str[i] && str[i]<7)                   hobby[str[i]-1].checked=true;               }             }         }

伊望岁月

var hobby = document.getElementsByName("hobby");这句是获取名称为‘hobby’的对象的集合。至于其他问题都是因为下面这段代码错了for(i=0;hobby.length;i++){应该为for(i=0; i < hobby.length; i++){
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript