Javascript函数变量问题

时间:2012-04-19 17:47:37

标签: jquery

我的脚本有什么问题?当我执行它时,警报(第2行)给了我“100,200,300undefinedundefined”,所以看起来100,200,300被解释为h1,当我希望它是h1,h2和h3(用逗号)时。

function myanimation(h1,h2,h3) {

        alert(h1 + h2 + h3);
        $("#h1").animate({"left": h1});
        $("#h2").animate({"left": h2});
    }

    var moves = new Array()
    moves[1] = [100,200,300];
    moves[2] = [300,200,100];
    moves[3] = [-500,-300,0];

    var i = 1;

    function animatenow(){
        myanimation(moves[i]);
        i++;
    }

$('#launch').click(function() {
        setInterval(animatenow, 5000);
    });

4 个答案:

答案 0 :(得分:6)

您正在将数组传递到myanimation,这与您的h1参数相对应。您没有传递h2h3,因此未定义。

答案 1 :(得分:2)

Adam,您将数组对象传入H1,而不是单独的变量

您可能想要更改

myanimation(moves[i]);

为:

myanimation(moves[i][0],moves[i][1],moves[i][2]);

答案 2 :(得分:2)

您正在将数组传递给myanimation,其中需要三个参数。

myanimation(moves[i]);其中moves[1] = [100,200,300]

h1 myanimation [100,200,300]function myanimation(moves) { $("#h1").animate({"left": moves[1]}); // moves[1] is 100 $("#h2").animate({"left": moves[2]}); // 200 }

将其更改为预期数组:

{{1}}

答案 3 :(得分:0)

根据您的代码,以下代码是否应该这样?

function animatenow(){
    myanimation(moves[i][0], moves[i][1], moves[i][2]);
    i++;
}