为了账号安全,请及时绑定邮箱和手机立即绑定

最后一个函数为什么运行不了呢

<!--<!DOCTYPE HTML>-->
<!--<html>-->
<!--<head>-->
   <!--<meta http-equiv="Content-Type" content="text/html; charset=gb2312">-->
   <!--<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(var i=0;i<hobby.length;i++){-->
           <!--hobby[i].checked=true;-->

       <!--}-->
       <!--// 任务1-->

   <!--}-->
   <!--function clearall(){-->
       <!--var hobby = document.getElementsByName("hobby");-->
       <!--//alert(hobby.length);-->
       <!--for(var i=0;i<hobby.length;i++){-->
           <!--hobby[i].checked=false;-->
       <!--}-->
       <!--// 任务2-->

   <!--}-->

   <!--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>-->



<!DOCTYPE HTML>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
   <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 (var i=0;i<hobby.length;i++){
           hobby[i].checked=true;
       }

       // 任务1

   }
   function clearall(){
       var hobby = document.getElementsByName("hobby");
       for(var i=0;i<hobby.length;i++){
           hobby[i].checked=false;
       }

       // 任务2

   }

   function checkone(){

      //任务三

       var hobby=document.getElementsByName("hobby");
       var j=document.getElementById("wb").value;
       for (var i=0;i<j.length;j++){
           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>

正在回答

3 回答

  function checkone(){

        //获取到name='hobby'的对象数组,长度为6
       var hobby=document.getElementsByName("hobby");

      //获取到ID为wb的对象的值 就是你在地址中输入的值
       var j=document.getElementById("wb").value;
        

      //判断j值是否合法
       if (j>6||j<1){
               alert("越界 请输入");
               document.getElementById("wb").value="";
        }else{

                //获取j对应的对象数组的下标

                var k = j-1;

                hobby[k].checked = true;

        }

   }

很不幸 你的j.length 是从头错到尾巴的,j本身只是一个字符串,你的length只能获取到j本身这个字符串的长度,

如果你输入的是300,j就是300,j的长度就是3;    你循环的毫无意义。


更加优雅的代码如下

        function checkone(){

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

            if(j>0&&j<7){

                var hobbyId = 'hobby'+j;

                var theOne  = document.getElementById(hobbyId);

                theOne.checked = true;

            }else{

                alert('please input the right number');

            }

        }


0 回复 有任何疑惑可以回复我~
#1

慕数据9493197 提问者

谢谢 谢谢你的解答 不过还是不太明白这里是什么意思 var hobbyId = 'hobby'+j; var theOne = document.getElementById(hobbyId); 原谅我是新手菜鸟/捂脸
2016-09-14 回复 有任何疑惑可以回复我~

(1) if(j.charAt(i)>6 || j.charAt(i)<1){}   //这里应该是输入的一段字符串,比如123。然后用字符串的下标,循环从0开始遍历,返回来单个字符串。只要这个字符是1和6之间就不会弹出越界框框。

 (2)   for(var n=0;n<j.length;n++){    
       hobby[(j.charAt(n))-1].checked=true;} // 这里charAt(n)返回的单个字符,然后减1是这个字符的下标,比如123字符串中的1字符下标是0.

0 回复 有任何疑惑可以回复我~
#1

慕数据9493197 提问者

谢谢你 现在懂了 可是为什么最后一个函数运行不了呢 你能帮我看看吗 谢谢
2016-09-12 回复 有任何疑惑可以回复我~
#2

xiaowan2064178456

那这样实现的了吗 加入输入的数字是11的话 不会弹出警告框啊
2016-10-14 回复 有任何疑惑可以回复我~

嗯。。我尽我的能力回答吧。

clearall();//没有找到相关明确的意思
   var hobby = document.getElementsByName("hobby");//通过“hobby”来获取元素,并返回包含所有“hobby”名字的元素的数组
   var j=document.getElementById("wb").value;//获取id为wb文本框的值

   for(var i=0;i<j.length;i++){
       if(j.charAt(i)>6 || j.charAt(i)<1){//charat()函数用于返回指定位置的字符,所以这里没弄明白是怎么回事。因为根据上下文,j的值很有可能只是一个数字,而不是一个字符串。我认为这里应该是让用户输入一个1——6的数字,如果这个数字超过了1-6的范围,那么则提示越界,需要用户重新输入
           alert("越界,请重新输入!");
           document.getElementById("wb").value="";//反之,获取wb文本框中的值
       }
   }
   
   for(var n=0;n<j.length;n++){

       hobby[(j.charAt(n))-1].checked=true;


不知道是不是这样,仅供参考。我也是新手。

0 回复 有任何疑惑可以回复我~
#1

慕数据9493197 提问者

谢谢你 不好意思昨天忘记把代码贴上去了 你的理解是对的 但是 后面这里还是不太理解 你能在帮我看看吗 谢谢你 for(var n=0;n<j.length;n++){ hobby[(j.charAt(n))-1].checked=true;
2016-09-11 回复 有任何疑惑可以回复我~
#2

银白的天空 回复 慕数据9493197 提问者

我的理解,j应该是一个数值,而不是一个字符串。但这里j.charAt(n)里,是返回“j字符串中某个位置的字符”,所以这里我也理解不了。。。。
2016-09-11 回复 有任何疑惑可以回复我~
#3

慕数据9493197 提问者 回复 银白的天空

嗯嗯 谢谢啊 就是最后一步哪里不太懂
2016-09-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

最后一个函数为什么运行不了呢

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信