1

setTimeout のミリ秒パラメータに変数を使用したいと考えています。

HTML

<ul>
<li>list item</li>
<li>list item</li>
<li>list item</li>
<li>list item</li>
</ul>

jQuery

var wait = $("li:last").index()*4000;
document.write(wait+'<br>');
setTimeout (argument.callee, wait);

コードは、リスト項目の数に応じて待機時間を計算し、コードを繰り返す必要があります。これを無限に繰り返す必要があります。私は多くの変種を試しましたが、それらはすべてエラーを引き起こします。それは明らかなことだと確信しています。何か助けはありますか?

ここにフィドルがありますhttp://jsfiddle.net/sZ3KY/

4

5 に答える 5

3

これはarguments.calleeであり、 argument.calleeではありません

この動作デモを確認してください:http ://jsfiddle.net/sZ3KY/3/

コード

var wait = $("li:last").index()*500;

function doIt() {
    document.write(wait+'<br>');
    setTimeout (arguments.callee, wait);
}

doIt();
于 2012-10-31T15:11:19.553 に答える
0

待機の印刷を遅らせたいですか?もしそうなら、あなたの中でそのようにタイムアウトする機能を使用してください

var wait = $("li:last").index()*4000;
setTimeout (function() {
    document.write(wait+'<br>');
}, wait);
于 2012-10-31T15:10:32.877 に答える
0

エラーは待機ではありません。待機は正常に機能します...

var wait = $("li:last").index()*1000;
document.write(wait+'<br>');
setTimeout (function () { alert('Works') }, wait);

http://jsfiddle.net/6e7kL/

問題はargument.callee、JSフィドルで定義されていないことです。

于 2012-10-31T15:11:34.267 に答える
0

まず、を使用しないでくださいdocument.writeページ全体がクリアされ、置き換えられます。第二に、あなたはここで何をしようとしていますか?ここに何を期待argument.calleeしますか?

実際の関数を指定すると、コードは正常に機能します。

var wait = $("li:last").index()*4000;
setTimeout (function(){
    alert('test');
}, wait);
​
于 2012-10-31T15:11:45.500 に答える
0

あなたの問題は、 setTimeout が関数を必要とするという事実にあると思います。見る:

http://jsfiddle.net/sZ3KY/1/

var wait = $("li:last").index()*4000;
document.write(wait+'<br>');
setTimeout (function(){alert("I've waited "+wait/1000+"seconds before doing this")}, wait);

</p>

于 2012-10-31T15:12:33.827 に答える