2012-04-19 103 views
2

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

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); 
    }); 

回答

2

亚当,你是传递一个数组对象为H1,而不是独立的变量

你可能想改变

myanimation(moves[i]); 

到:

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

另一个问题:当我在我的函数中使用i ++时,它不起作用;它总是发送移动[1],所以我如何使i ++范围成为全局而不是本地? – 2012-04-19 18:26:59

+0

@AdamStrudwick它不会那样对我。有没有其他的代码可能会重置我? – 2012-04-19 20:00:41

6

你传递一个数组myanimation,这相当于你h1参数。你没有通过h2h3,所以这些都是未定义的。

2

你传递一个数组到myanimation它期望三个参数。

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

所以h1myanimation[100,200,300]

改变它期望数组:根据您的代码

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

,应在下述代码这样的吗?

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

另一个问题:当我在我的函数中使用i ++时,它不起作用;它总是发送移动[1],所以我如何使i ++范围成为全局而不是本地? – 2012-04-19 18:33:07