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

谁帮我看看我的代码哪里出错了,为什么什么也显示不出来

var window_width = 1024;
var window_height = 768;
var r = 8;
var mt = 60;
var ml = 30;

const endTime = new Date(2014,12,20,15,23,56);
var currentTimeSeconds = 0

window.onload = function(){

   var canvas = document.getElementById('canvas');
   var context = canvas.getContext("2d");

   canvas.width = window_width;
   canvas.height = window_height;

   currentTimeSeconds = getCts()
   render(context)
}

function getCts(){
   var curTime = new Date();
   var ret = endTime.getTime() - curTime.getTime();
   ret = Math.round(ret/1000)

   return ret >= 0 ? ret :0;
}
function render(cxt){

   var hours = parseInt(currentTimeSeconds/3600);
   var minutes = parseInt((currentTimeSeconds-hours*3600)/60);
   var seconds = parseInt(currentTimeSeconds%60);

   renderDigit(ml,mt,parseInt(hours/10),cxt)
   renderDigit(ml+15*(r+1),mt,parseInt(hours%10),cxt)
   renderDigit(ml+30*(r+1),mt,10,cxt)
   renderDigit(ml+39*(r+1),mt,parseInt(minutes/10),cxt)
   renderDigit(ml+54*(r+1),mt,parseInt(minutes%10),cxt)
   renderDigit(ml+69*(r+1),mt,10,cxt)
   renderDigit(ml+78*(r+1),mt,parseInt(seconds/10),cxt)
   renderDigit(ml+93*(r+1),mt,parseInt(seconds%10),cxt)
}

function renderDigit(x,y,num,cxt){

   cxt.fillStyle = "blue";

   for(var i = 0 ; i < digit[num].length ; i++)
       for(var j = 0; j < digit[num].length ; j++)
           if(digit[num][i][j] == 1 ){
               cxt.beginPath();
               cxt.arc(x+j*2*(r+1)+(r+1),y+i*2*(r+1)+(r+1),r,0,2*Math.PI)
               cxt.closePath()

               cxt.fill()
           }

}
/**
* Created by Administrator on 14-12-16.
*/

正在回答

4 回答

5491356f0001ef7305000240.jpg

549135720001ccea05000240.jpg


在Chrome浏览器中,使用开发者工具,查看便一目了然。

数组越界,导致错误。

function renderDigit(x,y,num,cxt){
    //TODO 在此之前判断 num 是否 [0-9]之间的数字。
}


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

白水向前冲 提问者

能再给讲讲吗?什么是数组越界?老师的代码是这样写的 function renderDigit( x , y , num , cxt ){ cxt.fillStyle = "rgb(0,102,153)"; 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();
2014-12-17 回复 有任何疑惑可以回复我~

基础不好,经常问些小白问题,多有麻烦老师了,其实每个问题我都是认真想了才问的,确实是想不明白了htmlcssjs

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

我跟你犯了一样的错误啊 

遍历循环第二行 for(var j=0;i<digit[num][j].length;j++)

                                                                    ^

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

闫佳奇

length前面少一个[j]
2015-03-11 回复 有任何疑惑可以回复我~

加一个判断语句,num 属于0-10时  

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

举报

0/150
提交
取消

谁帮我看看我的代码哪里出错了,为什么什么也显示不出来

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