【发布时间】:2016-07-29 06:15:36
【问题描述】:
我用两个具有相同parentNode 的元素调用此函数:
var test = function(target, div){
alert(div.parentNode == target.parentNode ); // gives true
alert(div.offsetParent == target.offsetParent); // gives true
div.setAttribute("style", "position:relative; float:left; height:" + target.offsetHeight + "px;");
alert(div.parentNode == target.parentNode); // gives true
alert(div.offsetParent == target.offsetParent); // gives false!!!
}
如你所见,两个元素都有相同的父元素,这意味着它们在 DOM 树的同一个分支中,为什么它们有不同的offsetParent?
我注意到这里 div 具有相对位置,这似乎是原因,因为当我删除它时,两个警报都为真。 (但通常元素的位置不应影响其offsetParent)
/* 我在经过更多调查后编辑了该函数,它应该更多地显示问题出在哪里 */ 我在 FF 和 Chrome 上得到了相同的结果。两个元素的 parentNode 都是 table-td
感谢您的回答。
【问题讨论】:
-
“我看到这里的投票者比实际回复者更多” - 因为有许多低质量的问题没有提供足够的信息来实际产生答案。或者提问者甚至没有尝试用谷歌搜索他们的问题。
-
请注意,
.offsetParent和.parentNode不必给出相同的值。因为他们根据文档的结构获得不同的项目。 -
第二个如果你花时间专注于这个问题,你会看到两个元素都有相同的 parentNode(无论文档结构是什么),所以它们属于 div 的同一个分支,并且在那个分支祖先中有些有一个定位元素将是 offsetParent(两个 div 的我应该是相同的)
-
第三,可能有低质量的答案,但没有低质量的问题......一个问题假设我们不知道某事并且我们询问它。说一个问题质量低是没有意义的(正如一位好老师告诉我们的那样,一旦没有愚蠢的(这里你称之为低质量)问题..
-
@fekirimalek — 您将“愚蠢”与“低质量”混为一谈,并将科林鲍威尔的名言视为普遍真理,而不是在使用它的上下文中加以考虑。
标签: javascript html css