问答详情
源自:3-3 倒计时的时间计算

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

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.
*/

提问者:白水向前冲 2014-12-17 15:26

个回答

  • 赵小布
    2014-12-17 15:51:49
    已采纳

    5491356f0001ef7305000240.jpg

    549135720001ccea05000240.jpg


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

    数组越界,导致错误。

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


  • 慕移动9181930
    2022-03-23 02:05:00

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

  • 闫佳奇
    2015-03-11 22:57:16

    我跟你犯了一样的错误啊 

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

                                                                        ^

  • 慕姐3609379
    2015-02-14 22:50:40

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