js进阶9.4中的问题

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

慕少2510668

2016-04-27 23:30

<!DOCTYPE HTML>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

        <titlntsByName,getElementsBe>无标题文档</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");

          

          // 任务1 

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

        {

         if(hobby[i].type == "checkbox")

         {

            hobby[i].checked = true;

         }

        }

 

        }

        function clearall(){

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

            

         // 任务2    

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

          {

             hobby[i].checked = false;

          }

        }

        

        function checkone(){

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

         // 任务3

            var hobby = document.getElementById("hobby"+j)//要提问的部分;

            hobby.checked = true;

        }

        

        </script>

    </body>

</html>

题目任务1.在第27行处补充完整,实现当点击"全选"按钮时,将选中所有的复选项。

提示:document.getElementsByTagName("input")获取的是所有input标签,包括复选项和按钮,所以要判断是否是复选项,如是选中。

2.在第33行处补充完整,实现当点击"全不选"按钮时,将取消所有选中的复选项。

3.在第40行处补充完整,在文本框中输入输入1-6数值,当点击"确定"按钮时,根据输入的数值,通过id选中相应的复选项。

问题:1.代码中hobby+j hobby代表的是一个数组 而j是输入的数字,那hobby+j代表啥啊?

       2.把任务三写成hobby[j-1].checked=true;为什么不行啊?

写回答 关注

3回答

  • 慕娘9282524
    2016-04-28 12:01:17

     var hobby = document.getElementById("hobby"+j)//要提问的部分;

                hobby.checked = true;

    首先  j代表的是  文本框输入的内容  数字 1-6

    变量hobby  表示的是获取 id为hobby1-6的元素 

    “hobby”是字符串   "hobby"+j  的意思是hobby后面紧跟着的内容是j   

    当j=1 是    他表示的是  字符串 “hobby1”  和上面的id相对应

  • 慕粉3193552
    2016-04-28 10:21:44

    hobby是一个数组,j是文本框的value,所以,hobby+j毫无意义。

    其次,你把hobby加上引号,"hobby"它就不再是数组,而是字符串.再一个你把hobby[j-1].checked=true中的j用转成整形试一试。这是我的代码,希望对你有所帮助

    function checkone(){

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

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

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

                    hobby[i].checked=false;

                    if(hobby[i].id.indexOf(j)>-1){

                        hobby[i].checked=true;

                    }

                }

  • kuban
    2016-04-28 10:09:47
    1. 注意hobby与"hobby"区别,hobby是Id为("hobby"+j)的对象,"hobby"是个字符串,"hobby"+j  还是个字符串

    2. 注意getElementById与getElementsByName的区别,前者获得一个对象,后者获得对象的集合,也就是你说的数组的表现,如果hobby=document.getElementsByName("hobby"),hobby[j-1].checked=true;就对了


JavaScript进阶篇

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

468060 学习 · 21891 问题

查看课程

相似问题