我有以下代码......
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
我感觉我错过了一些明显的东西,但我不确定是什么,
非常感谢
答案 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++) {