我从互联网上的某个地方获取了此代码,但我不太了解。特别是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 ];
  }
}

09-20 06:21