为了账号安全,请及时绑定邮箱和手机立即绑定

定时器无效,digit已经引用了

var canvas=document.getElementById("canvas");
var context=canvas.getContext("2d");
	canvas.width=800;
	canvas.height=600;

		  setInterval(render,10);
 
	//console.log(digit);
var r=6;
var timer;
//console.log(x);
var oTime=new Date(2016,4,14,0,0,0);
var nTime=new Date();
var h1=parseInt((oTime-nTime)/(1000*60*60*10)),
    h2=parseInt((oTime-nTime)/(1000*60*60)%10);
var m1=parseInt((oTime-nTime)/(1000*60)%60/10),
    m2=parseInt((oTime-nTime)/(1000*60)%60%10);
var s1=parseInt((oTime-nTime)/(1000)%60/10),
    s2=parseInt((oTime-nTime)/(1000)%60%10);
function render(){
	context.clearRect(0,0,800,600); 
	draw(0,0,h1,context);
    draw(15*(r+1),0,h2,context);
	draw(30*(r+1),0,10,context);
	draw(39*(r+1),0,m1,context);
	draw(54*(r+1),0,m1,context);
	draw(69*(r+1),0,10,context);
	draw(78*(r+1),0,s1,context);
	draw(93*(r+1),0,s2,context);
	}
//console.log(s1);
function draw(x,y,num,cxt){
	for(var i=0;i<digit[num].length;i++){
		for(var j=0;j<digit[num][i].length;j++){
			if(digit[num][i][j]==1){
		cxt.beginPath();
		cxt.arc(x+j*(r+1)*2+r+1,y+i*(r+1)*2+r+1,r,0,2*Math.PI);
		cxt.fillStyle="blue";
		cxt.fill();}
			}
		}
	}//draw


正在回答

1 回答

1、setInterval()使用的位置不对,应该放在你的h1,h2等算出来之后,不然你使用setInterval()时调用render()后调用draw()时,h1、h2等参数是属于未定义的,也就是num是未定义的,所以digit[num].length会报错;

2、你要确保var oTime=new Date(2016,4,14,0,0,0);中oTime的时间要在当前时间nTime之后,不然相减之后为负值,后面使用的时候索引越界,digit[num].length也会报错;

3、注意两个时间之间不要相差太大,最好不要超过100小时,不然小时的十位数显示时也会引起索引越界而报错。

0 回复 有任何疑惑可以回复我~
#1

C阳0 提问者

非常感谢!
2016-05-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

定时器无效,digit已经引用了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信