htmlNode.childNodes [i] .nodeName中#text的JavaScript含义

时间:2016-02-04 11:24:45

标签: javascript html dom

我是JavaScript新手,当我玩DOM模型时,当我想要显示HTML nodeName中的所有childNodes时,我感到困惑。 当我有nodeName标记时,有head名为 #text ,当我删除完整的head标记时,会有正常的 HEAD BODY nodeName。 什么意味着 #text nodeName,特别是当我有head代码时?

这是我的代码:

<html>
    <head>
    </head>
    <body>          
        <p id="p1">SOME TEXT</p>    
        <button type="button" onclick="javascript:changeNode()">Click </button>
        <script type="text/javascript">
        function changeNode() {
            var htmlNode = document.documentElement;                
            var anzahl = htmlNode.childNodes.length;

            var html_text = "<p>";
            for(var i = 0;i<anzahl;i++){
                html_text += " " + htmlNode.childNodes[i].nodeName +";";
            }
            html_text += "</p>";
            document.getElementById("p1").innerHTML = html_text;
        }
        </script>
    </body>
</html>

它的输出是(head标签):

  

HEAD; #文本; BODY;

它的输出是(没有head标签):

  

HEAD; BODY;

2 个答案:

答案 0 :(得分:0)

  

#text nodeName的含义特别是当我有头标记时。

这些是您在标记中无意中引入的空换行符。

如果您不想包含文字节点,请使用children代替childNodes

答案 1 :(得分:0)

元素内的空格被视为#text,文本被视为节点。删除</head>&amp;之间的空格<body>标记如下:

<html>
 <head></head><body>         
    <p id="p1">SOME TEXT</p>    
    <button type="button" onclick="javascript:changeNode()">Click </button>
 </body>

这将为您提供输出 头部,身体