在点击函数里写document.write,,怎么不像之前一样在原有的网页内容后面输出呢

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

yu_1010

2019-03-13 14:46

<!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" value="music">  音乐

          <input type="checkbox" name="hobby" id="hobby2" value="music">  登山

          <input type="checkbox" name="hobby" id="hobby3" value="music">  游泳

          <input type="checkbox" name="hobby" id="hobby4" value="music">  阅读

          <input type="checkbox" name="hobby" id="hobby5" value="music">  打球

          <input type="checkbox" name="hobby" id="hobby6" value="music">  跑步 <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(i=0;i<hobby.length;i++)

            {

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

                {

                    //document.write(hobby[i].value+"<br>");   //问题:在这里输出内容会把之前的网页都清了,只有一个value的值在这里

                    hobby[i].checked=true;

                }

            }

          // 任务1 

           

        }

        function clearall(){

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

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

            {

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

                {

                    hobby[i].checked=false;

                }

            }

         // 任务2    

            

        }

        

        function checkone(){

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

            var j_id="hobby"+j;

            document.getElementById(j_id).checked=true;

         // 任务3

        

        }

        

        </script>

    </body>

</html>


写回答 关注

2回答

  • keydew
    2019-04-12 14:50:25

    我的理解应该是document.getElementByTagName()返回的元素数组应该是由这些元素的地址组成的数组(所以可以直接通过对数组元素修改属性作用到页面元素本身上),而不是把元素重新赋值到一个新数组。

    所以第一次document.write()时,因为在页面成功加载成功后执行document.write()会把页面原有内容清空,所以写完第一个music,再循环时由hobby[i]地址返回的元素都是空的了,于是不能输出其它选项的value。

    以上是我自己的理解,可能会有不对的地方

  • qq_HR来刚好_0
    2019-03-14 14:56:13

    for循环


    yu_101...

    还是没明白,for循环的话,不是应该循环几次,就在屏幕输出几次吗?为什么后面什么都没有,只有一个music值呢?

    2019-03-14 15:17:56

    共 1 条回复 >

JavaScript进阶篇

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

468194 学习 · 21891 问题

查看课程

相似问题