我有一些奇怪的问题与一些JavaScript.在下面的代码中,浏览器将在if,else if,else if条件中执行多个路径.因此,例如控制台将记录"a c"或"b c".
if (divs[i].row == hover_div.row && divs[i].obj != hover_div.obj)
{
console.log("a");
divs[i].obj.stop()
.animate({'width':d_thin}, { duration:600, queue:false })
.animate({'height':d_expand}, { duration:600, queue:false });
}
else if (divs[i].col == hover_div.col && divs[i].obj != hover_div.obj)
{
console.log("b");
divs[i].obj.stop()
.animate({'width':d_expand}, { duration:600, queue:false })
.animate({'height':d_thin}, { duration:600, queue:false });
}
else if (divs[i].obj != hover_div.obj);
{
console.log("c");
divs[i].obj.stop()
.animate({'width':d_thin}, { duration:600, queue:false })
.animate({'height':d_thin}, { duration:600, queue:false });
}
Run Code Online (Sandbox Code Playgroud)
我已经通过在块外添加一个计数器来检查代码没有执行两次.如果我将if语句嵌套在下面,那么整个工作正常,但我不应该需要吗?
if (divs[i].row == hover_div.row && divs[i].obj != hover_div.obj)
{
console.log("a");
divs[i].obj.stop()
.animate({'width':d_thin}, { duration:600, queue:false })
.animate({'height':d_expand}, { duration:600, queue:false });
}
else {
if (divs[i].col == hover_div.col && divs[i].obj != hover_div.obj)
{
console.log("b");
divs[i].obj.stop()
.animate({'width':d_expand}, { duration:600, queue:false })
.animate({'height':d_thin}, { duration:600, queue:false });
}
else {
if (divs[i].obj != hover_div.obj);
{
console.log("c");
divs[i].obj.stop()
.animate({'width':d_thin}, { duration:600, queue:false })
.animate({'height':d_thin}, { duration:600, queue:false });
}
}
}
Run Code Online (Sandbox Code Playgroud)
jba*_*bey 14
else if (divs[i].obj != hover_div.obj); // <--
Run Code Online (Sandbox Code Playgroud)
删除分号