我正在尝试在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
答案 0 :(得分:1)
问题很简单,当DOM元素node
没有偏移父元素时,node.offsetParent
为null
,而不是undefined
。 typeof 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