在coffeescript中使用单个等号进行while循环

时间:2011-11-22 21:50:07

标签: coffeescript

我正在尝试在coffeescript中编写以下JS:

x = 0;
if(node.offsetParent) {
  do {
    x += node.offsetLeft;
  } while(node = node.offsetParent);
}       

这是我到目前为止所拥有的,但节点似乎回归无效

if node.offsetParent
  loop
    x += node.offsetLeft
    break if typeof (node = node.offsetParent) == "undefined"
x

1 个答案:

答案 0 :(得分:1)

问题很简单,当DOM元素node没有偏移父元素时,node.offsetParentnull,而不是undefinedtypeof null'object',而不是'undefined'

为什么不采用与原始JS循环相同的方法,只需检查node.offsetParent是否有错误?然后您的代码可能类似于:

x = 0
if node.offsetParent
  loop
    x += node.offsetLeft
    break unless (node = node.offsetParent)
x

我还想指出,虽然CoffeeScript没有do..while语法,但在这种情况下你可以简单地使用while循环,使你的if多余:

x = 0
while node.offsetParent
  x += node.offsetLeft
  node = node.offsetParent
x