DOM のトラバースをより適切に処理するために、いくつかの単純な HTML および JS コードをセットアップしました。
ここに私のHTMLがあります:
<!DOCTYPE html>
<html>
<head>
<title>Sandbox</title>
</head>
<body>
<div>
<h1 id="title">Sandbox</h1>
<button id="clickMe" onclick="playingAroundWithNodes()">Play with nodes!</button>
</div>
</body>
<script type="text/javascript" src="Sandbox3.js"></script>
</html>
そして、ここに私のJavaScriptがあります:
function playingAroundWithNodes() {
//Getting a reference to some nodes!
var theHtmlNode = document.childNodes[1];
var theHeadNode = theHtmlNode.childNodes[0];
var theBodyNode = theHtmlNode.childNodes[1];
//Let's check out those nodes!
console.log("theHtmlNode is a " + theHtmlNode.nodeName + " type node.");
console.log("theHeadNode is a " + theHeadNode.nodeName + " type node.");
console.log("theBodyNode is a " + theBodyNode.nodeName + " type node.");
}
ただし、取得するコンソールログは次のとおりです。
theHtmlNode is a HTML type node.
theHeadNode is a HEAD type node.
theBodyNode is a #text type node.
何を与える?テキスト ノードは一体どこにあるのでしょうか。それはタイトル ノードではありませんか? 私は混乱していて、たくさん遊んでいます(jsによると、実際にはbodyノードがHEADの3番目の子であることがわかりましたが、HTMLを見ると意味がありません)。3番目の子孫か何かであることがわかりましたが、子供は直接の子供を意味すると思いました...助けていただければ幸いです!