2

私はしばらくの間これを理解しようとしていましたが、今はここに投稿して、setInterval私が抱えているこの問題を最終的に理解できるかどうかを確認しようと思いました。

これが問題になる場合は、このドキュメントでjQuery1.4.4を使用しています。

次の場合:

var MS = {},
    MS.timer = 1200; // this both would be user accessible by the plugin

// if the timer option is set then activate slideshow
if ( MS.timer ) { setInterval( "go(2,'right')" , MS.timer); }

// show the slide (as defined by the pass ins)
function go(slideNumber, direction) {
    if ( !paused || !running ) { 
        console.log('run!'+', '+slideNumber+' , '+direction);
    }
}

ただし、これにより次のようになります。

go is not defined

これは、1200ミリ秒ごとに「正しく」ログに記録されます。go()では、の値を渡すなど、関数を実行するにはどうすればよいですslideNumber, directionか?

4

3 に答える 3

3

これを試して:

if ( MS.timer ) { setInterval( function() { go(2,'right'); }, MS.timer); }

あなたが投稿したものからはわかりませんが、そのコードはすべてどこかの関数内にあると推測しています。「go」機能は、それが機能するためにグローバルである必要があります。文字列だけを渡すと、インタープリターはタイマーが起動したときにそれをグローバル コンテキストで評価します。私が提供した例のように実際の関数を使用することで、そのローカルの "go" をクロージャに取り込みます。

于 2010-11-16T20:52:52.110 に答える
0

試す:

setInterval(function() {
   go(2, 'right');
}, MS.timer);
于 2010-11-16T20:53:41.920 に答える
0

これを試して:

window.setInterval(go, MS.timer, [2, 'right']);
于 2010-11-16T20:54:02.920 に答える