Javascript客户端不一致性
在编写Javascript函数时,我从中获得了帮助,该函数可以获取隐藏元素的高度,有人向我推荐了原型函数。在本例中,它们设置可见性:隐藏;位置:绝对位置;显示:块;,这有效地让我们测量了如果展示的话,clientHeight会是什么。然后他们把一切都放回去,你就可以继续你的生意了。我还没有使用原型,但我认为它可以正常工作。然而,当我试图在自己的代码中模拟相同的函数时,位置的使用:绝对;扔掉了测量。没有它,它可以很好地工作,但是它的使用让我们能够在不影响设计的情况下在瞬间完成这项工作。我的版本如下,你知道为什么它不起作用吗Javascript客户端不一致性,javascript,html,css,dom,Javascript,Html,Css,Dom,在编写Javascript函数时,我从中获得了帮助,该函数可以获取隐藏元素的高度,有人向我推荐了原型函数。在本例中,它们设置可见性:隐藏;位置:绝对位置;显示:块;,这有效地让我们测量了如果展示的话,clientHeight会是什么。然后他们把一切都放回去,你就可以继续你的生意了。我还没有使用原型,但我认为它可以正常工作。然而,当我试图在自己的代码中模拟相同的函数时,位置的使用:绝对;扔掉了测量。没有它,它可以很好地工作,但是它的使用让我们能够在不影响设计的情况下在瞬间完成这项工作。我的版本如下
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);
提前感谢您的帮助。我不知道它在不可见的情况下是否有效,但是jQuery在这里有一些选项—特别是;值得一看吗?根据您的示例,类似于:
height = $(obj[objName]).height();
您是只在cetain浏览器上看到,还是在所有浏览器上都看到?Prototype的getDimensions对Safari和其他可能存在错误的浏览器进行检查,您应该尝试将其放入代码中,看看它是否解决了问题
这也可能是因为您使用的是obj[objName]而不是document.getElementById-AFAIK,这些将返回稍有不同的对象,这可能会导致您看到的不一致性。我通常使用.offsetHeight来测量我的身高,例如:
height = $(obj[objName]).height();
var h=document.getElementByIddivname.offsetHeight
当我需要测量某物时,如果它有位置:绝对
我经常遇到这样的情况,当我有两列,其中一列是绝对列,如果父列比另一列大,那么父列需要被绝对列向下推。如果父级高度大于另一列的高度,我将使用offsetHeight设置父级高度。我应该发布更多代码。obj[objName]是对数组的引用,该数组保存通过getElementById检索到的对象。我已经在Safari 3、昨晚的WebKit构建和Firefox 3.0.7中测试了我的代码。Prototype所做的检查与我的情况无关,因为display等于None。您正在测试哪些浏览器?不工作是不是意味着你犯了错误?0? 什么?正如我上面所说的,测量是不准确的。如果我没记错的话,它的测量距离正确的高度大约有40-50个像素,最终只需忽略位置=绝对;谢谢你在页面上使用doctype吗?