分享一下三种方法做任务3

来源:9-4 区别getElementByID,getElementsByName,getElementsByTagName

weixin_慕先生4035002

2020-09-08 12:18

<!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">  1.音乐

          <input type="checkbox" name="hobby" id="hobby2">  2.登山

          <input type="checkbox" name="hobby" id="hobby3">  3.游泳

          <input type="checkbox" name="hobby" id="hobby4">  4.阅读

          <input type="checkbox" name="hobby" id="hobby5">  5.打球

          <input type="checkbox" name="hobby" id="hobby6">  6.跑步 <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")&&document.getElementsByName("hobby");

            for ( i =0; i<hobby.length; i++){

           hobby[i].checked = true;

            }

           

        }

        function clearall(){

            var hobby = document.getElementsByName("hobby");

            for (i=0; i<hobby.length;i++){

              hobby[i].checked= false;

            }

         // 任务2    

            

        }

        

        function checkone(){

          var hobby = document.getElementsByName("hobby");

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

           //switch和if差不多但是switch更加简洁 但是都比较繁琐, 太多选项就不能用了

           switch(j){

             case '1' : hobby[0].checked= true;

             break;

             case '2' : hobby[1].checked= true;

             break;

             case '3' : hobby[2].checked= true;

             break;

             case '4' : hobby[3].checked= true;

             break;

             case '5' : hobby[4].checked= true;

             break;

             case '6' : hobby[5].checked= true;

             break;

             default:alert('only have 6 options')

           }

        }

        //用循环做 暂时感觉最好的办法

      /*          function checkone(){

            clearall();

            var hobby = document.getElementsByName("hobby");

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

            for(var i=0;i<j.length;i++){

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

                if( j<1||j>6 ){

                   alert('over limit')

                 }

            }    

            

        }*/

        

        //用ID方法做 这种方法局限性比较大而且不够智能

   /*      function checkone(){

   clearall();

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

            var hobby = document.getElementById("hobby"+j);

            if (j<1||j>6){

              alert('over limit')

            }

            hobby.checked = true;

            

        }*/

        

        

        </script>

    </body>

</html>


写回答 关注

3回答

  • 慕斯2554272
    2021-11-14 22:32:16

    为啥要用for循环啊 不用也是可以实现啊


  • 彩鸢
    2020-09-14 21:34:49

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

        var hobby = document.getElementsByName("hobby");

        for (let i=0; i< hobby.length; i++) {

        if(i == j-1) {

            hobby[i].checked = "checked"

        }

    }

    hobby本身是个数组,只要选中的数字-1等于数组下标就找到了那个hobby,完事

    筱熙X

    不需要用循环加判断 if(j <= hobby.length) { hobby[j-1].checked = true ; } 就可以了

    2020-11-08 08:53:44

    共 1 条回复 >

  • weixin_慕先生4035002
    2020-09-08 12:20:13

    大家一起来分享一下其他方法吧


JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468060 学习 · 21891 问题

查看课程

相似问题