当我们需要在界面上把一个元素附加到另外一个元素上面的时候,元素的定位是一个问题,在ajax in action这本书的实例中有这么一个例子
function SetElementPosition(theTextBoxInt)
{
var selectedPosX = 0;
var selectedPosY = 0;
var theElement = theTextBoxInt;
if(!theElement)
{
return;
}
var theEleHeight = theElement.offsetHeight;
var theEleWidth = theElement.offsetWidth;
while(theElement != null)
{
selectedPosX += theElement.offsetLeft;
selectedPosX += theElement.offsetTop;
theElement = theElement.offsetParent;
}
xPosElement = document.getElementById("spanOutput");
xPosElement.style.left = selectedPosX;
if(theTextBoxInt.obj.matchTextBoxWidth)
{
xPosElement.style.width = theElemWidth;
}
xPosElement.style.top = selectedPosy + theElemHeight;
xPosElement.style.display = "block";
if(theTextBoxInt.obj.useTimeout)
{
xPosElement.onmouseout = StartTimeout;
xPosElement.onmouseover = EraseTimeout;
}
else
{
xPosElement.onmouseout = null;
xPosElement.onmouseover = null;
}
}
开始木有看的太明白,offsetParent这个东东不知道是搞么子用滴,上网查了资料,如下:offsetParanet属性返回一个对象的引用,这个对象是距离调用offsetParent的元素最近的(在包含层次中最靠近的),并且是已进行过CSS定位的容器元素。如果这个容器元素未进行css定位,则offsetParent属性的取值为根元素。当容器元素的style.display被设置为none时返回null。