Javascript 达到规定时间后如何旋转车轮?

Javascript 达到规定时间后如何旋转车轮?,javascript,html,Javascript,Html,我的幸运抽奖号码的小项目工作,能够旋转后,用户点击按钮,但不能自动做它的车轮,这意味着我想显示倒计时后,时间是达到车轮旋转。我使用了设置间隔的方法,但它不起作用 window.onload=函数(){ 变量五分钟=10*1, display=document.querySelector(“#count”); startTimer(五分钟,显示); }; 功能启动计时器(持续时间、显示){ var定时器=持续时间,分钟,秒; setInterval(函数() { 分钟=parseInt(计时器/

我的幸运抽奖号码的小项目工作,能够旋转后,用户点击按钮,但不能自动做它的车轮,这意味着我想显示倒计时后,时间是达到车轮旋转。我使用了设置间隔的方法,但它不起作用

window.onload=函数(){
变量五分钟=10*1,
display=document.querySelector(“#count”);
startTimer(五分钟,显示);
};
功能启动计时器(持续时间、显示){
var定时器=持续时间,分钟,秒;
setInterval(函数()
{
分钟=parseInt(计时器/60,10);
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=“车轮将在:“+分钟+”:“+秒后旋转;
如果(--定时器<0){
//定时器=持续时间;
自旋();
如果(计时器=spinTimeTotal){
停止旋转车轮();
返回;
}
var spinAngle=spinAngleStart-easeOut(自旋时间,0,spinAngleStart,SpinangleTotal);
startAngle+=(spinAngle*Math.PI/180);
drawRouletteWheel();
spinTimeout=setTimeout('rotateWheel()',10);
}
功能停止旋转轮(){
clearTimeout(spinTimeout);
变量度=startAngle*180/Math.PI+90;
var arcd=arc*180/Math.PI;
var指数=数学地板((360度/360度)/arcd);
ctx.save();
ctx.font='bold 12px sans serif';
var text=重新启动[索引]
//ctx.fillText(文本,250-ctx.measureText(文本).width/2250+10);
//window.location=“navto://”+重新启动[索引]+“_堆栈”;
//警报(文本);
document.getElementById(“msg”).innerHTML=text;
ctx.restore();
}
功能输出(t、b、c、d){
变量ts=(t/=d)*t;
var tc=ts*t;
返回b+c*(tc+-3*ts+3*t);
}
draw();
}

车轮将在以下时间后旋转:
幸运数字是:

首先选择解决方案。更换

spinTimeout = setTimeout('rotateWheel()', 10);

出现错误的原因是
rotateWheel
startTimer
函数中的嵌套函数,不在全局范围内。代码段
“rotateWheel()”
当文本被编译成全局作用域中的函数时,会传递给setTimeout,该函数在执行时无法找到
rotateWheel
函数。将文本替换为函数引用(在作用域中)首先就无需编译源文本

通常避免在代码中使用JavaScript源代码片段,除非它是一个快速而肮脏的解决方案,其他人不会看到:-)

我认为这是正在进行的工作,在代码完成之前可能会有更多的bug。祝你好运。
作为对注释的响应,控制盘继续旋转,因为在
计时器
变为负值后,在每次间隔计时器回调期间调用
spin()

 var timerId = setInterval(function () 
    {
        minutes = parseInt(timer / 60, 10);
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = "Wheel Will Spin After: "+minutes + ":" + seconds;

        if (--timer < 0) {
            //timer = duration;
            spin();
            clearInterval( timerId)
            display.textContent = "Wheel Will Spin After: ";
        }`
    }, 1000);
var timerId=setInterval(函数()
{
分钟=parseInt(计时器/60,10);
秒=parseInt(计时器%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=“车轮将在:“+分钟+”:“+秒后旋转;
如果(--定时器<0){
//定时器=持续时间;
自旋();
清除间隔(timerId)
display.textContent=“车轮将在以下时间后旋转:”;
}`
}, 1000);

上面的解决方案是调用
spin
一次,然后停止间隔计时器。请注意
if(-timer<0)
后跟
if(时间这个问题太宽泛了,没有任何迹象表明你在做什么。试着发布你尝试过的代码,它应该如何工作以及出现了什么问题。如果你希望有人能够回答你的问题,你真的需要显示你的代码。我们怎么知道为什么你的间隔方法不起作用?检查这个,先生,我已经添加了cod我不理解错误。非常感谢。这非常有帮助。轮子没有停止,而是在循环中。
 var timerId = setInterval(function () 
    {
        minutes = parseInt(timer / 60, 10);
        seconds = parseInt(timer % 60, 10);

        minutes = minutes < 10 ? "0" + minutes : minutes;
        seconds = seconds < 10 ? "0" + seconds : seconds;

        display.textContent = "Wheel Will Spin After: "+minutes + ":" + seconds;

        if (--timer < 0) {
            //timer = duration;
            spin();
            clearInterval( timerId)
            display.textContent = "Wheel Will Spin After: ";
        }`
    }, 1000);