问答详情
源自:3-2 倒计时数字钟的具体绘制

为什么我写第二个数字的时候,只出来第一个?

我写第二个数字的时候,只出来第一个;然后我把第一个注释掉,就只出来第二个,第三个数字也不出。  也就是 这个renderDigit 只调用了一次!我看老师的代码没有特殊处理呀!求解

renderDigit(MARGIN_LEFT, MARGIN_TOP, parseInt(hour/10), context);

renderDigit(MARGIN_LEFT+15*(r+1),MARGIN_TOP,parseInt(hour%10),context);

renderDigit(MARGIN_LEFT+30*(r+1),MARGIN_TOP,10,context);

http://img.mukewang.com/56b070ee0001a95b10100661.jpg

完整代码:

// JavaScript Document

var WINDOW_WIDTH = 1000;

var WINDOW_HEIGHT = 700;

var MARGIN_LEFT = 100;

var MARGIN_TOP = 50

var r = 5;

window.onload =  function(){

var canvas = document.getElementById('canvas');

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

canvas.width = WINDOW_WIDTH;

canvas.height = WINDOW_HEIGHT;

render(context);

}


function render(context){

var hour = 14;

var minute = 36;

var second = 59;

renderDigit(MARGIN_LEFT, MARGIN_TOP, parseInt(hour/10), context);

renderDigit(MARGIN_LEFT+15*(r+1),MARGIN_TOP,parseInt(hour%10),context);

renderDigit(MARGIN_LEFT+30*(r+1),MARGIN_TOP,10,context);

}


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();

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();

}

}

}

}


提问者:jerryguo 2016-02-02 14:24

个回答

  • 樱花飞落ll
    2016-02-02 17:28:14
    已采纳

    renderDigit()函数里的

    for(var i=0; i<=digit[num].length; i++){

    for(var j=0; j<=digit[num][i].length;j++){

    应该是

    for(var i=0; i<digit[num].length; i++){

    for(var j=0; j<digit[num][i].length;j++){ 不要等号


  • 樱花飞落ll
    2016-02-03 08:53:40

    不用客气~把代码放在js文件中,f12 chrome调试就可以看到报错信息了