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

来源:3-3 倒计时的时间计算

白水向前冲

2014-12-17 15:26

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回答

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

    5491356f0001ef7305000240.jpg

    549135720001ccea05000240.jpg


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

    数组越界,导致错误。

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


    白水向前冲

    能再给讲讲吗?什么是数组越界?老师的代码是这样写的 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 16:44:33

    共 1 条回复 >

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

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

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

    我跟你犯了一样的错误啊 

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

                                                                        ^

    闫佳奇

    length前面少一个[j]

    2015-03-11 22:58:19

    共 1 条回复 >

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

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

炫丽的倒计时效果Canvas绘图与动画基础

学习HTML5中最激动人心的技术Canvas,彻底释放自己的创造力

96746 学习 · 1000 问题

查看课程

相似问题