【发布时间】:2013-06-26 07:02:41
【问题描述】:
考虑这个简单的页面:
<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() 开始工作。这里奇怪的是我没有以任何方式使用这个变量。你能解释一下这种行为吗?
【问题讨论】:
-
为我工作,没有注释掉的行:jsbin.com/ibapal/2/edit
-
是的.. 工作得很好我没有看到你描述的错误jsfiddle.net/Xn3ge/2
标签: javascript dom