JS для вопроса цикла - PullRequest
       1

JS для вопроса цикла

0 голосов
/ 03 сентября 2010

У меня есть код ниже ...

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, он попадает в строку for () и переходит прямо кзакрывающая скобка.

в строке for () перед выполнением, Firebug показывает (например)

id=2
ToggleButtons.length=5
x=0

У меня такое ощущение, что я упускаю что-то очевидное, но яне уверен, что,

Большое спасибо

Ответы [ 3 ]

4 голосов
/ 03 сентября 2010

Ваш 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');
} 
2 голосов
/ 03 сентября 2010

Неправильные части цикла for, это должны быть инициализация, условие, затем увеличение:

 for (x = 0; x < ToggleButtons.length; x++)
1 голос
/ 03 сентября 2010

Изменить эту строку:

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

к этому:

for (x = 0; x < ToggleButtons.length; x++) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...