2012-09-16 50 views
1

我想使用此for循環以顯示div。但是我從jQuery lib中得到一個奇怪的錯誤。JavaScript的循環與小數

錯誤:語法錯誤,無法識別的表達式:= 10]

我已閱讀關於使用JavaScript小數的問題,但我還是不明白爲什麼這是行不通的:

for (var i = 10.00; i >= ui.value; i -= 0.25) { 
    $("data_id=" + Math.floor(i) + "]").show(); 
} 

當隱藏的div,我用這個和它的作品罰款:

for (var i = 0.00; i < ui.value; i += 0.25) { 
    $("[data_id=" + Math.floor(i) + "]").hide(); 
} 
+2

爲什麼你使用小數,如果你.floor()他們呢?嘗試使用整數循環。 – Gregor

回答

5

你忘了[在第一循環中,這將工作:

for (var i = 10.00; i >= ui.value; i -= 0.25) { 
    $("[data_id=" + Math.floor(i) + "]").show(); 
} 

如果你是.floor() - 無論如何,你應該把它轉換成一個整數循環。

+0

謝謝,沒有看到一個來.... ....! – 8bitcat

+1

請注意對整數循環的評論,因爲你是.show() - 每個組件最多連續四次,這是不需要的。 – Gregor

2

您缺少屬性的左方括號等於選擇:

for (var i = 10.00; i >= ui.value; i -= 0.25) { 
    $("[data_id=" + Math.floor(i) + "]").show(); 
} 


正如其他人所說,但也絕對沒有理由使用這個花車,因爲調用 .floor()基本上意味着你在每一個的div調用 .show() 4次不必要的:

for (var i = 10; i >= ui.value; i--) { 
    $("[data_id=" + i + "]").show(); 
} 

這應該做到正是你想要,約四分之一 工作。

1

你在你的選擇缺少[這裏:

$("data_id=" + Math.floor(i) + "]").show(); 

這應該是:

$("[data_id=" + Math.floor(i) + "]").show(); 

你也許應該補充'周圍的data_id值一樣,所以最後的結果應該成爲:

$("[data_id='" + Math.floor(i) + "']").show(); 
1

您應該永遠不會,永遠依賴於浮點算法迭代/索引變量。他們可能會讓你陷入奇怪的境地,更糟糕的是,不同的處理器對浮點的處理方式不同。你的例子似乎沒有任何浮點的副作用,但使用浮點實際上是一種不好的做法。