考虑这个简单的页面:
<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()
开始工作。这里奇怪的是我没有以任何方式使用这个变量。你能解释一下这种行为吗?