我从互联网上的某个地方获取了此代码,但我不太了解。特别是for
循环部分。
function FindPosition(oElement) {
if( typeof( oElement.offsetParent ) != "undefined" ) {
for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) {
posX += oElement.offsetLeft;
posY += oElement.offsetTop;
}
return [ posX, posY ];
}
else {
return [ oElement.x, oElement.y ];
}
}
我在这里特别不理解
for
循环部分:for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent )
我期望会有一个中间表达式或上限,而不只是
oElement
有人可以向我解释吗?
最佳答案
这只是使用for-loop
而不是do-while
的示例。如果使用do-while重写此代码,则应该清楚了解循环背后的整体思路。
function FindPosition(oElement) {
if( typeof( oElement.offsetParent ) != "undefined" ) {
var posX = 0, posY = 0;
do {
// update coordinates using offset data
posX += oElement.offsetLeft;
posY += oElement.offsetTop;
// move up the DOM tree
oElement = oElement.offsetParent
} while(oElement != null) // while there is offsetParent
return [ posX, posY ];
}
else {
return [ oElement.x, oElement.y ];
}
}