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

为什么用alert输出正常,全部换成document.write错误;只用一个document.write值也正常,两个就错误呢?

<!DOCTYPE HTML>

<html>  

<head>  

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  

<title>JavaScript</title>  


<script type="text/javascript">

 /*

 function getValue()

          {

              var myH=document.getElementById("myHead");

              alert(myH.innerHTML)

          }

          function getElements()

          {

             var myS=document.getElementsByName("sex");

              alert(myS.length);

          }


          function getTagElements()

          {

              var myI=document.getElementsByTagName("td");

              alert(myI.length);

          }

 */

function getTagElements(){

    var mynodes=document.getElementsByTagName("tr");

    

    alert(mynodes.length);

 //  document.writeln(mynodes.length);

  

    var tab=mynodes[0].hasChildNodes();

    alert(tab);

// document.writeln(tab);


    var lg=mynodes[0].childNodes;

    alert(lg.length);

 //  document.writeln(lg.length);

   

}     

 

     </script>      

</head>  

<body>  

    

        <form name="Input">

            <table align="center" width="500px" height="50%" border="1">

                <tr>

                    <td align="center" width="100px">

                        学号:

                    </td>

                    <td align="center" width="300px">

                        <input type="text" id=userid name="user" onblur="validate();">

                        <div id=usermsg></div>

                    </td>

                </tr>

                <tr>

                    <td align="center" width="100px">

                        姓名:

                    </td>

                        <td align="center">

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

                    </td>

                </tr>

                <tr>

                    <td align="center" width="%45">

                        性别:

                    </td>

                    <td align="center">

                        <input type="radio" name="sex" value="男">

                        男

                        <input type="radio" name="sex" value="女">

                        女

                    </td>

                </tr>

                <tr>

                    <td align="center" width="30%">

                        年龄:

                    </td>

                    <td align="center" width="300px">

                        <input type="text" name="age">

                    </td>

                </tr>

                <tr>

                    <td align="center" width="100px">

                        地址:

                    </td>

                    <td align="center" width="300px">

                        <input type="text" name="addr">

                    </td>

                </tr>


            </table>

        </form>

       

       

        <input type="button" onclick="getTagElements()"

            value="看看标签名为tr的节点有几个?" />

            

       


    </body>

</html>


正在回答

2 回答

哈哈, 我知道这个,刚刚我就发现这个问题了,找了半天终于找到是什么原因了:

首先,你输出document后,会覆盖<body>里面的所有内容,所以input的这个元素就没有了,自然就没法查看有多少个节点了。为什么第一个document能输出出来呢,因为输出第一个后他就覆盖了<body>里面的元素,这个时候<body>里面就只有doument输出出来的数字,第二个第三个document找不到input这些标签,所以只有第一个是正常的。

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

qq_牛牛_12 提问者

非常感谢!
2016-03-31 回复 有任何疑惑可以回复我~

我不明白你所说的错误是什么,我觉得可能你觉得,这个东西跑完之后不会像你的alert一样在当前窗口输出结果。我们通常按照两种的方式使用 write() 方法:一是在使用该方在文档中输出 HTML,另一种是在调用该方法的的窗口之外的窗口、框架中产生新文档。在第二种情况中,请务必使用 close() 方法来关闭文档。

而我觉得你现在觉得的所谓的错误可能就是你并没有注意到你已经用到了document.write的第二种方法,因为JavaScript在跑的过程当中不会涉及到html当中的对象,我们的浏览器只是因为有了相应的JavaScript的解释器,所以当我们在界面当中写入JavaScript之后,是我们浏览器默认的采用自己的JavaScript解释器来解释了相关语句,进而进一步来确定浏览器自身该在哪里进行相应的修饰。

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

举报

0/150
提交
取消

为什么用alert输出正常,全部换成document.write错误;只用一个document.write值也正常,两个就错误呢?

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