这是一段jquery / javascript代码,我没有写,但我正在尝试在Firebug上调试(我按原样复制/粘贴它,只需添加一些空间以获得良好的alineation):
if (control == "#testTakerSearchSource" && object !== undefined && object[key] !== undefined && key == "datasets" && object[key].length >= 3) {
var afterValues = [];
if (object[key].length == 3 && object[key][0] == "1") {
afterValues[0] = "1,2,3";
object[key] = afterValues;
}
else {
var beforeValues = object[key];
afterValues[0] = "1,2,3";
for (var i = 3; i < beforeValues.length; i++) {
afterValues[i - 2] = beforeValues[i];
}
object[key] = afterValues;
}
}
我设置了第一行的断点。它应该停止。当我点击F10时,它直接进入afterValues[i - 2] = beforeValues[i];
线,跳过几个括号直接进入for循环...我当然尝试重新启动FF,但错误又发生了,据我所知发生在至少另一台机器上。
我的猜测是我正在使用保留关键字或其他东西。我会改写这个,因为我不喜欢它看起来的样子,但有没有人知道它为什么会发生?
Firefox 14.0.1
Firebug 1.10.3
jQuery 1.8.0
jQuery-ui 1.8.23
修改
我试过了:
try {
if (control == "#testTakerSearchSource" && object !== undefined && object[key] !== undefined && key == "datasets" && object[key].length >= 3) {
var afterValues = [];
if (object[key].length == 3 && object[key][0] == "1") {
afterValues[0] = "1,2,3";
object[key] = afterValues;
}
else {
var beforeValues = object[key];
afterValues[0] = "1,2,3";
for (var i = 3; i < beforeValues.length; i++) {
afterValues[i - 2] = beforeValues[i];
}
object[key] = afterValues;
}
}
}
catch (err) {
alert(err);
}
现在如果我在同一行设置断点,它会跳转到object[key] = afterValues;
行。如果我继续,没有任何例外......
Edit2:其他假设:Firefox的某个版本与我实际向我展示的版本不同。那会有意义吗?我重新开始了整个事情,所以我不知道会发生什么......
答案 0 :(得分:2)
我认为这可能是由于代码中的一些例外。我的建议是使用错误处理来修改代码
try
{
//your code if (control == "#testTakerSearchSource" && .........
}
catch(err)
{
alert(err);
}
答案 1 :(得分:1)
我最终改写了那部分,我不知道为什么会发生这种情况,Firebug从那时起就更新了