JS for循环问题

时间:2010-09-02 23:11:26

标签: javascript for-loop

我有以下代码......

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');
        }
    }
} 

然而,当我用n = 0-> 4调用SelectButton(n)时,它会命中for()行并直接跳到右括号。

在执行之前,在for()行上

,Firebug显示(例如)

id=2
ToggleButtons.length=5
x=0

我感觉我错过了一些明显的东西,但我不确定是什么,

非常感谢

3 个答案:

答案 0 :(得分:4)

您的for()订单混淆了,这个:

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

应该是:

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 :(得分:2)

for循环的部分是错误的方式,它应该是初始化,条件,然后增量:

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

答案 2 :(得分:1)

更改此行:

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

到此:

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