我對一些javascript有一個好奇的問題。在以下代碼中,瀏覽器將在if,else if,else if條件中執行多條路徑。例如,控制檯會記錄「a c」或「b c」。JavaScript在if語句中執行多個case
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 });
}
我已經檢查過,通過在塊之外添加計數器,代碼沒有執行兩次。如果我嵌入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 });
}
}
}
你讓你的問題好奇 – 2012-04-23 13:07:04
爲什麼不只是調試它? – vals 2013-01-31 14:07:04