问答详情
源自:9-4 区别getElementByID,getElementsByName,getElementsByTagName

请问问什么这种方法不行


          <input type="button" id="btn1" value = "全选" >

          <input type="button" id="btn2" value = "全不选" >

          <p>请输入您要选择爱好的序号,序号为1-6:</p>

          <input id="wb" name="wb" type="text" >

          <input name="ok" type="button" value="确定" onclick = "checkone();">

        </form>

        <script type="text/javascript">

        

    window.onload = function(){

        var btn1 = document.getElementById("btn1");

        var btn2 = document.getElementById("btn2");

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

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

                btn1.onclick = function{

                    hobby[i].checked=true;

                }

                btn2.onclick = function{

                    hobby[i].checked=false;

                }

            }

          // 任务1            

    }    


提问者:xuxianxiu 2016-07-18 23:53

个回答

  • 慕粉3599560
    2016-07-19 10:18:40
    已采纳

    1、你为什么要加window.onload = function()这个事件,直接定义一个函数就可以了,window.onload 是当JavaScript写在head标签内时才用的。你的代码是直接写在body里的,用不上window.load事件。

    2、for循环里i<=hobby.length是错的,正确的应该是i<hobby.length (js中索引是从0开始的)。

    3、 btn1.onclick事件和btn2.onclick的函数应该是放在for循环的外面。比如:

      btn1.onclick = function(){

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

                        hobby[i].checked=true;

                    }

    }

    你把上面的问题都改了,再试试

  • 慕侠9145951
    2016-07-19 10:09:56

    我是这么认为的:onclick()方法只会执行 hobby[i].checked=true;这一段代码,而

     var btn1 = document.getElementById("btn1");

            var btn2 = document.getElementById("btn2");

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

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

    这一段代码是网页加载就执行,onclick里面根本执行不了循环语句