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

全选的实现

function checkall(){
            var hobby = document.getElementsByTagName("input");
            for(var i=0;i<hobby.length;i++){
                if(hobby[i].type=="checkbox")
                hobby[i].checked=true;
            }

可以用document.getElementsByName("hobby");的方法去实现吗?

正在回答

4 回答

<!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 j=document.getElementById("wb").value;
        //    if(j==1){
        //        document.getElementById("hobby1").checked=true;
        //    }
        //    else if(j==2){
        //        document.getElementById("hobby2").checked=true;
        //    }
        //     else if(j==3){
        //        document.getElementById("hobby3").checked=true;
        //    }
        //     else if(j==4){
        //        document.getElementById("hobby4").checked=true;
        //    }
        //     else if(j==5){
        //        document.getElementById("hobby5").checked=true;
        //    }
        //    else{
        //        document.getElementById("hobby6").checked=true;
        //    }
          var k=document.getElementsByName("hobby");
           for(var n=0;n<k.length;n++){
               if(k[n].checked=true){
                   k[n].checked=false;
               }
             if(j==n+1){
                 k[n].checked=true;
                 n=n+1;
                 k[n-2].checked=false;    
             }
             
           }
        }
       
        </script>
    </body>
</html>


0 回复 有任何疑惑可以回复我~
function checkone(){
           var j=document.getElementById("wb").value;
           var k=document.getElementsByName("hobby");
           for(var n=0;n<k.length;n++){
               if(k[n].checked=true){
                   k[n].checked=false;
                   //这里的作用是为了清除上一次被选中的项
               }
             if(j==n+1){
                 k[n].checked=true;
                // n=n+1;
                // k[n-2].checked=false;    
             }//代码运行到这里,但你在输入框输入一个数字时,比如2。就会有对应的选项被选中;
             //而当再次输入另一个数字,比如4,确认后,2的选项就会清除,也就是4之前的选项就会清除
             //我的代码其实不是最优化的,你可以看其他同学的有些效果看起来更明了些,我只是习惯记录自己写代码的思路,就会注释很多代码而没有删掉


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

慕村1994845

这里j=document.getElementById("wb").value好像有问题;应该用j=parseInt(document.getElementById("wb"));因为前者得到的是字符串,不能和n+1划等号,n+1是数值
2016-12-03 回复 有任何疑惑可以回复我~
#2

卡兰尼克 回复 慕村1994845

谢谢谢谢
2016-12-06 回复 有任何疑惑可以回复我~

可以用啊!看下我的代码:(任务一上的注释

<!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.getElementsByName("hobby");
            
            for(var i=0;i<hobby.length;i++){
                
                    hobby[i].checked=true;
                
            }
            //这里可以用byname,例子用tagname是为了使用三种不同方法
          // 任务1 
           
        }
        function clearall(){
            var hobby = document.getElementsByName("hobby");
            for(var i=0;i<hobby.length;i++){
                
                    hobby[i].checked=false;
                
            }
         // 任务2    
            
        }
        
        function checkone(){
           var j=document.getElementById("wb").value;
        //    if(j==1){
        //        document.getElementById("hobby1").checked=true;
        //    }
        //    else if(j==2){
        //        document.getElementById("hobby2").checked=true;
        //    }
        //     else if(j==3){
        //        document.getElementById("hobby3").checked=true;
        //    }
        //     else if(j==4){
        //        document.getElementById("hobby4").checked=true;
        //    }
        //     else if(j==5){
        //        document.getElementById("hobby5").checked=true;
        //    }
        //    else{
        //        document.getElementById("hobby6").checked=true;
        //    }
          var k=document.getElementsByName("hobby");
           for(var n=0;n<k.length;n++){
               if(k[n].checked=true){
                   k[n].checked=false;
               }
             if(j==n+1){
                 k[n].checked=true;
                // n=n+1;
                // k[n-2].checked=false;    
             }
             
           }
        }
       
        </script>
    </body>
</html>


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

慕村1994845

怎么复制上来的代码是乱码,坑了
2016-11-22 回复 有任何疑惑可以回复我~
#2

卡兰尼克

用getElementByName("hobby")为什么还要用for循环语句..不是input中所有name都是hobby吗。。。
2016-12-01 回复 有任何疑惑可以回复我~
#3

卡兰尼克 回复 慕村1994845

然后用hobby.checked=true不就把名为hobby的全部选中了吗。。。为什么还要用for循环来自加一来一个个选择呀
2016-12-01 回复 有任何疑惑可以回复我~
#4

卡兰尼克 回复 慕村1994845

用getElementByName("hobby")为什么还要用for循环语句..不是input中所有name都是hobby吗。。。
2016-12-01 回复 有任何疑惑可以回复我~
#5

卡兰尼克

第三段没看到洞。。。。可以讲解一下吗555
2016-12-01 回复 有任何疑惑可以回复我~
#6

慕村1994845 回复 卡兰尼克

你是说 checkone() 这个函数吗? for(var n=0;n<k.length;n++){if(k[n].checked=true){ k[n].checked=false; } 这个for循环的前半段是为了起到清除的作用的;我还是用JS注释给你看吧,看我下面的回复
2016-12-03 回复 有任何疑惑可以回复我~
#7

慕村1994845 回复 卡兰尼克

用getElementByName("hobby")得到的是元素名为hobby的集合,类似于数组,而.checked是元素属性(这一点我不知道对不对),你可以去请教一些大神给你详细解释一下,我记这种都喜欢用自己的方式形象记忆理解,不太记得专业解释
2016-12-03 回复 有任何疑惑可以回复我~
查看4条回复

可以,不过如若用document.getElementsByName("hobby"),得自己提前在标签里面加入name属性,代码的使用量会增加,自己得一个个的去添加name属性,不过直接使用name属性的话,自己对于自己的代码也会很清楚,很容易进行项目命名,显得比较清晰。所以具体使用哪个,需要自己去进行判断考虑。。小小拙见,如果有什么不对的地方,请见谅。

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

举报

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

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

进入课程

全选的实现

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