2013-04-10 63 views
-1

爲什麼最上面的代碼工作,最底層的代碼不工作?具有多個語句的JavaScript`if`

這一個工程:

var i=1 
function next() { 
    document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    if (i<jsArray.length-2) 
     i++ 
    else 
     i=0 
} 

這一個不工作:

var i=1 
function next() { 
    if (i<jsArray.length-2) 
     i++ 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    else 
     i=0 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
} 
+3

爲了避免這個問題,將來總是在你的'if'和'else'語句中放置花括號。它永遠不會受到傷害,它所添加的都是兩個字符。 – War10ck 2013-04-10 13:30:26

+2

也使用分號,是的他們是可選的,但使用它們的最佳實踐。像JSLInt/JSHint這樣的工具可以提供幫助,並且可以添加到大多數IDE中。 – epascarello 2013-04-10 13:34:45

+0

謝謝大家的幫助和建議 – Mikey 2013-04-10 13:49:53

回答

6

如果你想下一個ifelse條件多條語句,你需要用他們在一個塊:

function next() { 
    if (i<jsArray.length-2) { 
     i++ 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } 
    else { 
     i=0 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } 
} 

請注意,在語法上這是等效的 - if聲明後面還有一條語句(塊聲明)。

The grammar給出了全部細節:

IfStatement
        if (表達)聲明else聲明
        if (表達)聲明

這表明,if語句只能跟着一個語句。

+0

謝謝,我知道這將是簡單的,因爲我只是無法找出什麼, – Mikey 2013-04-10 13:32:00

+1

不客氣,我很高興我可以幫助。其他人建議使用像http://jshint.com這樣的工具來驗證你的代碼。這通常是一個好主意。通過它運行有問題的代碼,你會得到更多的提示,這將有助於你遵循最佳實踐。 – 2013-04-10 13:36:08

0

您需要括號:

function next() { 
    if (i<jsArray.length-2) { 
     i++; 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } else { 
     i=0; 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } 
} 

我也選擇了加分號。

對於JS錯誤/警告,你會發現JSLint的幫助:http://www.jslint.com

1

你必須保持一個需要,如果條件是在大括號真要執行的代碼塊。

var i=1 
function next() { 
    if (i<jsArray.length-2) 
    { 
     i++ 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } 
    else 
    { 
     i=0 
     document.getElementById("photo").src = "http://www.Example.com/images/" + jsArray[i]; 
    } 
}