在编写Javascript时,我从earlier得到了帮助的函数,它获取了隐藏元素的高度,有人将我引用到Prototype函数getDimensions()。在示例中,他们设置了“visibility:hidden; position:absolute; display:block;”,这有效地让我们可以测量clientHeight 在显示时 的内容。然后他们把它全部放回去,你可以开展你的业务。我没有使用原型,但我认为它工作正常。但是,当我试图在我自己的代码中模仿相同的函数时,使用“position:absolute;”扔掉了测量。没有它它可以正常工作,但它的使用使我们能够在不扭曲设计的情况下瞬间完成这项工作。我的版本在下面,任何想法为什么它不起作用?
var objStyle = obj[objName].style;
// Record original style values
var visibility = objStyle.visibility;
//var position = objStyle.position;
var display = objStyle.display;
// Modify object for measuring
objStyle.visibility = "hidden";
//objStyle.position = "absolute";
objStyle.display = "block";
// Measure height
height = obj[objName].clientHeight;
// Fix object
objStyle.visibility = visibility;
//objStyle.position = position;
objStyle.display = display;
// Return height
return parseInt(height);
提前感谢您的帮助。
答案 0 :(得分:0)
我不知道它是否在隐形时起作用,但jQuery在这里有一些选项 - 特别是height function;值得一看?根据您的示例,例如:
height = $(obj[objName]).height();
答案 1 :(得分:0)
您是仅在cetain浏览器上还是在所有浏览器上看到此内容? Prototype的getDimensions()检查Safari(可能还有其他有缺陷的浏览器),你应该尝试将它放在你的代码中,看看它是否解决了这个问题。
这也可能是因为你使用obj [objName]而不是document.getElementById() - AFAIK这些将返回稍微不同的对象,这可能会导致你看到的不一致。
答案 2 :(得分:0)
我通常使用.offsetHeight测量我的高度,例如:
var h = document.getElementById(divname).offsetHeight;
当我需要测量某些东西时,如果它有位置:绝对值;
当我有两列时,我经常遇到这种情况,其中一列是绝对的,如果父级比另一级大,那么父级需要被绝对值推下来。如果它高于另一列的高度,我将使用offsetHeight来设置父高度。