带有多个语句的JavaScript`if`

时间:2013-04-10 13:27:57

标签: javascript if-statement

为什么顶部代码有效,而底部代码却没有?

这个有效:

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 个答案:

答案 0 :(得分: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语句后面只能跟一个语句。

答案 1 :(得分: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];
    }
}

答案 2 :(得分: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