この単純なページを考えてみましょう:
<html>
<head>
<script>
var upper;
var lower;
function crop() {
//upper = document.getElementById('upper');
lower = document.getElementById('lower');
document.body.innerHTML = '';
document.body.appendChild(lower.cloneNode(true));
}
function up() {
document.body.innerHTML = '';
document.body.appendChild(lower.parentNode);
}
</script>
</head>
<body>
<div id="upper">
Upper Div
<div id="lower">
Lower Div
<button onclick="crop()">Crop</button>
<button onclick="up()">Up</button>
</div>
</div>
</body>
</html>
したがってCrop
、ボタンは本体をクリアし、下部の div を複製して本体に追加します。ボタンの目的はUp
、下位の div の親を表示 ( upper
div) することです。私の最初の試みでは、 を使用しようとしましたがlower.parentNode
、それは であるため機能しませんnull
。lower
これは、変数が本体の一部ではない DOM 要素を指しているためだと思います。(私の理解は正しいですか?)しかし、コメント行を考えてみましょう:
//upper = document.getElementById('upper');
上位のdivへの参照を取得するだけです。この行のコメントを外すと、up()
作業が開始されます。ここで奇妙なのは、この変数をまったく使用していないことです。この振る舞いを説明できますか?