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

在函数里添加document.write,为什么不像之前的例子在html后面追加输出呢?

<!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>");   //为什么这一行取消注释,运行的话,点击全选过后,只有一个music的值输出呢???

                    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>


提问者:yu_1010 2019-03-13 11:41

个回答

  • Code小白k1
    2019-06-23 10:38:05

    我觉得页面加载时先输出html内容

    然后解析js代码 如果有输出流(document.write())那么就输出确实能正常输出

    没有的话解析完 

    onload事件完成后再触发别的事件(例如onClick)然后执行该事件 里面有输出流(document.write())的话就会覆盖原界面吧

  • Code小白k1
    2019-06-23 10:31:46

    document.write()一般用于页面 onload 的时候。如果页面已经 onload 完了,也就是页面加载完成了,再调用docume.write()的话,那么,整个 HTML 页面将被覆盖

    转自:https://www.cnblogs.com/holy-night/articles/5122860.html