2010-09-02 135 views
0

我有下面的代碼...JS for循環問題

var ToggleButtons=new Array(); 
ToggleButtons[0] = "#Click"; 
ToggleButtons[1] = "#DoubleClick"; 
ToggleButtons[2] = "#Drag"; 
ToggleButtons[3] = "#RightClick"; 
ToggleButtons[4] = "#MiddleClick"; 


function SelectButton(id) { 
    var x = 0; 
    for (x = 0; x++; x < ToggleButtons.length) { 
     if (x == id) { 
      $(ToggleButtons[x]).addClass('ToggleButtonSelected'); 
     } else { 
      $(ToggleButtons[x]).removeClass('ToggleButtonSelected'); 
     } 
    } 
} 

然而,當我打電話SelectButton(N),其中n = 0-> 4,它擊中了()線和跳躍直接向右大括號。

上爲()線

它執行前,Firebug的節目(如)

id=2 
ToggleButtons.length=5 
x=0 

我已經得到了我失去了一些東西很明顯的感覺,但我不知道是什麼,

非常感謝

回答

2

for循環的部分是錯誤的方式,它應該是初始化,conditi上,然後遞增:

for (x = 0; x < ToggleButtons.length; x++) 
+0

謝謝你 - 我在那一直盯着10分鐘 – Basic 2010-09-02 23:29:31

4

for()順序混合起來,這一點:

for (x = 0; x++; x < ToggleButtons.length) { 

如果b E:

for (x = 0; x < ToggleButtons.length; x++) { 

您可以使用.toggleClass("class", bool)縮短了一點,雖然,像這樣:

function SelectButton(id) { 
    for (var x = 0; x < ToggleButtons.length; x++) { 
     $(ToggleButtons[x]).toggleClass('ToggleButtonSelected', x === id); 
    } 
} 

一個更好的方法是將緩存選擇使它們不會運行的每個時間,像這樣:

var ToggleButtons = [$("#Click"), $("#DoubleClick"), $("#Drag"), $("#RightClick"), $("#MiddleClick")]; 

function SelectButton(id) { 
    $(".ToggleButtonSelected").removeClass('ToggleButtonSelected'); 
    ToggleButtons[id].addClass('ToggleButtonSelected'); 
} 
1

改變這一行:

for (x = 0; x++; x < ToggleButtons.length) { 

這樣:

for (x = 0; x < ToggleButtons.length; x++) { 
+0

該死。 TY。我授予道格拉斯a)他需要更多,b)他解釋了他的答案 – Basic 2010-09-02 23:29:11