2012-04-19 23 views
2

スクリプトの問題点は何ですか?私がそれを実行すると、アラート(2行目)は "100,200,300undefinedundefined"を返します.100,200,300はh1、h2、h3(カンマ)で表示したいと考えているようです。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

もう1つの質問:私の機能でi ++を使用すると機能しません。それは常に動き[1]を送るので、どうすればi ++スコープをローカルではなくグローバルにすることができますか? –

+0

@AdamStrudwickそれは私のためにそれをしていない。私はリセットするかもしれないいくつかの他のコードがありますか? –

6

あなたのh1パラメータに対応myanimationに配列し、渡しています。 h2またはh3を渡していないので、これらは未定義です。

2

あなたは、配列を渡していますmyanimationには、3つのパラメータが必要です。 moves[1] = [100,200,300]

だからあなたmyanimationh1が、それは、配列を期待する[100,200,300]

変更になり

myanimation(moves[i]);:あなたのコードに基づいて

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 ++スコープをローカルではなくグローバルにすることができますか? –