2012-03-26 11 views
1

スクロール(0,10,200,10)を入力します。 しかし、実行すると文字列 "xxpos"または "yypos"が渡され、私はappostraphesなしで試してみましたが、うまくいきませんでした。Javascript引数

scroll = function(xpos,ypos,time,rounds){ 
    var xxpos = xpos*1; 
    var yypos = ypos*1; 
    var rrounds = rounds*1; 
    var ttime = time*1; 
    x = 0; 
    xyz=window.setInterval("scroller('xxpos','yypos','ttime','rrounds')",ttime); 
} 
function scroller(xpos,ypos,time,rounds){ 
    alert(xpos + ypos + time + rounds); 
} 
+0

あなたは 'scroller'の関数にパラメータとして文字列を与えます。また、* afaik *の変数は、文字列を評価する 'setInterval'スコープからは利用できません。 –

+0

宣言されていない 'x = 0'と' xyz = ..'はそこで何をしていますか? –

+0

おそらく 'xyz'は彼の間隔を止めるために必要な別のスコープのvarです。しかし、その名前は醜いです。 –

答えて

6

文字列を使用しないで、クロージャ(匿名関数)を使用します。

window.setTimeout(function() { 
    scroller(xxpos, yypos, ttime, rrounds); 
}, ttime); 
2

それはこのようにする必要があります:あなただけyyposなど、文字列のxxposを渡す

そう
xyz=window.setInterval("scroller(" + xxpos + "," + yypos + "... 

+0

ありがとう!これはうまくいった!あまりにも明白なことを考えなかったとは思えません! –

1

あなたのコードでは、scroll()を呼び出すたびにビルドことを知ることが起こるのかタイマー?

ループのようにするのですか?その後:

xyz = window.setTimeout(function(){ 
    scroller(xxpos,yypos,ttime,rrounds) 
},ttime); 
1

あなたはクロージャを使用する必要があります

... 
xyz = window.setInterval(function() { scroller(xxpos,yypos,ttime,rrounds); }, ttime); 
... 
1

文字列が変数になっていないためです。

これは動作します:

window.setInterval("scroller("+ xxpos + "," + yypos + "," + ttime + "," + rrounds + ")",ttime); 

またはそれ以上:

window.setInterval(function() { scroller(xxpos, yypos, ttime, rrounds); }, ttime); 
関連する問題