我想在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);
代码应根据有多少列表项计算等待时间,然后重复代码。这应该无限重复。我尝试了很多变种,它们都会产生错误。我确定它显而易见。有什么帮助吗?
答案 0 :(得分: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();
答案 1 :(得分:0)
var wait = $("li:last").index()*4000;
setTimeout (function() {
document.write(wait+'<br>');
}, wait);
答案 2 :(得分:0)
错误与等待无关。等待工作正常......
var wait = $("li:last").index()*1000;
document.write(wait+'<br>');
setTimeout (function () { alert('Works') }, wait);
问题是你的JS小提琴中没有定义argument.callee
。
答案 3 :(得分:0)
首先,请勿使用document.write
。它将清除整个页面,并替换它。第二,你想在这做什么?你期望argument.callee
能在这里做什么?
如果你给它一个实际的功能,你的代码工作正常:
var wait = $("li:last").index()*4000;
setTimeout (function(){
alert('test');
}, wait);
答案 4 :(得分:0)
我认为你的问题在于setTimeout需要一个函数。参见:
var wait = $("li:last").index()*4000;
document.write(wait+'<br>');
setTimeout (function(){alert("I've waited "+wait/1000+"seconds before doing this")}, wait);