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

js进阶9.4中的问题

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

 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相对应

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

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;

                }

            }

0 回复 有任何疑惑可以回复我~
  1. 注意hobby与"hobby"区别,hobby是Id为("hobby"+j)的对象,"hobby"是个字符串,"hobby"+j  还是个字符串

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


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

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468189    人
  • 解答问题       21891    个

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

进入课程

js进阶9.4中的问题

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