2012-01-17 27 views
0

我在Rails應用程序中使用CoffeeScript。如何JavaScript的轉換爲CoffeeScript的兩種情況:如何將JavaScript轉換爲CoffeeScript兩種情況

var colIndex = 0, 
    colRight = 0, 
    cols = this.grid.columnX, 
    len = cols.length, 
    cmatch = false; 

for (len; colIndex < len; colIndex++) { 
    colRight = cols[colIndex].x + cols[colIndex].w; 
    if (xy[0] < colRight) { 
     cmatch = true; 
    break; 
    } 
} 

setTimeout(function() { 
    d.scrollTop = st; 
}, 10); 

預先感謝您的幫助!

+0

可能重複[?是否有轉換JavaScript來的CoffeeScript工具(http://stackoverflow.com/questions/3510906/is-there-a-tool -for-conversion-javascript-to-coffeescript) – 2012-01-17 10:46:26

回答

1

1.CoffeeScript支持for in迭代在一個數組上,所以你根本不需要colIndexlen

colRight = 0 
cols = @grid.columnX 
cmatch = false 

for col in cols 
    colRight = col.x + col.w 
    if xy[0] < colRight 
    cmatch = true 
    break 

2.

setTimeout (-> d.scrollTop = st), 10 
+0

setTimeout看起來不錯,但你會忽略OP可能實際上想要匹配項目的索引。看到我的答案,提供了一個解決方案。 – 2012-01-18 22:03:00

0

有一個網站做這項工作js2coffee

的答案是:

colIndex = 0 
colRight = 0 
cols = @grid.columnX 
len = cols.length 
cmatch = false 
len 
while colIndex < len 
    colRight = cols[colIndex].x + cols[colIndex].w 
    if xy[0] < colRight 
    cmatch = true 
    break 
    colIndex++ 
setTimeout (-> 
    d.scrollTop = st 
), 10 
0

這裏是我的刺吧:

for col, idx in @grid.columnX when xy[0] < colRight = (col.x + col.w) 
    cmatch = idx 
    break 

循環後因此,C匹配要麼是未定義或比賽的指數,而colRight將匹配山坳的右側,或者最後一個山坳的右側如果找不到匹配項。

這裏有一個小提琴在玩:http://jsfiddle.net/fNSXE/1/

相關問題