我是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;
答案 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>
这将为您提供输出 头部,身体