我有下面的代码...
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我感觉我漏掉了一些明显的东西但我不确定是什么,
非常感谢
发布于 2010-09-03 07:14:07
for循环的部分是错误的,它应该是初始化,条件,然后是增量:
for (x = 0; x < ToggleButtons.length; x++)发布于 2010-09-03 07:13:56
您的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');
} 发布于 2010-09-03 07:14:36
更改此行:
for (x = 0; x++; x < ToggleButtons.length) {要这样做:
for (x = 0; x < ToggleButtons.length; x++) {https://stackoverflow.com/questions/3631960
复制相似问题