-1

为什么上面的代码有效而下面的代码无效?

这个有效:

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];
}
4

3 回答 3

6

if如果你想在一个or条件之后有多个语句else,你需要将它们包装在一个块中:

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语句后面仍然跟着一个语句(一个块语句)。

语法给出了完整的细节:

IfStatement :
    if ( 表达式 ) 语句 else 语句
    if ( 表达式 ) 语句

这表明一个if语句后面只能跟一个语句。

于 2013-04-10T13:29:35.447 回答
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];
    }
}
于 2013-04-10T13:31:04.227 回答
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

于 2013-04-10T13:29:57.530 回答