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

请问这里哪里出问题了

照着视频完成的,但最后怎么刷新都是显示这个,请问是哪里出问题了

https://img1.sycdn.imooc.com//5d5425150001bb0b14140370.jpg

html文件:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Countdown</title>
  <link rel="stylesheet" href="./style/style.css">
</head>
<body>
  <canvas id="countdown">
    当前浏览器不支持Canvas,请更换浏览器后再试
  </canvas>
  <script type="text/javascript" src="Countdown-digit.js"></script>
  <script type="text/javascript" src="Countdown.js"></script>
</body>
</html>


Countdown-digit.js文件:

// 存放模型
digit =
  [
    [
      [0, 0, 1, 1, 1, 0, 0],
      [0, 1, 1, 0, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 0, 1, 1, 0],
      [0, 0, 1, 1, 1, 0, 0]
    ], //0
    [
      [0, 0, 0, 1, 1, 0, 0],
      [0, 1, 1, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [1, 1, 1, 1, 1, 1, 1]
    ], //1
    [
      [0, 1, 1, 1, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 1, 1, 0, 0, 0],
      [0, 1, 1, 0, 0, 0, 0],
      [1, 1, 0, 0, 0, 0, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 1, 1, 1, 1, 1]
    ], //2
    [
      [1, 1, 1, 1, 1, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 1, 1, 1, 0, 0],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 1, 1, 0]
    ], //3
    [
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 1, 0],
      [0, 0, 1, 1, 1, 1, 0],
      [0, 1, 1, 0, 1, 1, 0],
      [1, 1, 0, 0, 1, 1, 0],
      [1, 1, 1, 1, 1, 1, 1],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 1, 1]
    ], //4
    [
      [1, 1, 1, 1, 1, 1, 1],
      [1, 1, 0, 0, 0, 0, 0],
      [1, 1, 0, 0, 0, 0, 0],
      [1, 1, 1, 1, 1, 1, 0],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 1, 1, 0]
    ], //5
    [
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 1, 1, 0, 0, 0],
      [0, 1, 1, 0, 0, 0, 0],
      [1, 1, 0, 0, 0, 0, 0],
      [1, 1, 0, 1, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 1, 1, 0]
    ], //6
    [
      [1, 1, 1, 1, 1, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 0, 1, 1, 0, 0, 0],
      [0, 0, 1, 1, 0, 0, 0],
      [0, 0, 1, 1, 0, 0, 0],
      [0, 0, 1, 1, 0, 0, 0]
    ], //7
    [
      [0, 1, 1, 1, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 1, 1, 0]
    ], //8
    [
      [0, 1, 1, 1, 1, 1, 0],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [1, 1, 0, 0, 0, 1, 1],
      [0, 1, 1, 1, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 0, 1, 1],
      [0, 0, 0, 0, 1, 1, 0],
      [0, 0, 0, 1, 1, 0, 0],
      [0, 1, 1, 0, 0, 0, 0]
    ], //9
    [
      [0, 0, 0, 0],
      [0, 0, 0, 0],
      [0, 1, 1, 0],
      [0, 1, 1, 0],
      [0, 0, 0, 0],
      [0, 0, 0, 0],
      [0, 1, 1, 0],
      [0, 1, 1, 0],
      [0, 0, 0, 0],
      [0, 0, 0, 0]
    ] //:
  ];


Countdown.js文件

var radius = 8;
var margin_top = 60;
var margin_left = 30;
const endTime = new Date(2019, 7, 14, 22, 04, 52);
var currentShowTimeSeconds = 0;
window.onload = function() {
  var countdown = document.getElementById("countdown");
  countdown.width = 1000;
  countdown.height = 700;
  if (countdown.getContext("2d")) {
    var context = countdown.getContext("2d");
  } else {
    alert("当前浏览器不支持Canvas,请更换浏览器后再试");
  }
  currentShowTimeSeconds = getCurrentShowTimeSeconds();
  render(context);
}
function getCurrentShowTimeSeconds() {
  var currentTime = new Date();
  var ret = endTime.getTime() - currentTime.getTime();
  ret = Math.round(ret / 1000);
  return ret >= 0 ? ret : 0;
}
function render(context) {
  var hours = parseInt(currentShowTimeSeconds / 3600);
  var minutes = parseInt((currentShowTimeSeconds - hours * 3600) / 60);
  var seconds = currentShowTimeSeconds % 60;
  renderDigit(margin_left, margin_top, parseInt(hours / 10), context);
  renderDigit(margin_left + 15 * (radius + 1), margin_top, parseInt(hours % 10), context);
  renderDigit(margin_left + 30 * (radius + 1), margin_top, 10, context);
  renderDigit(margin_left + 39 * (radius + 1), margin_top, parseInt(minutes / 10), context);
  renderDigit(margin_left + 54 * (radius + 1), margin_top, parseInt(minutes % 10), context);
  renderDigit(margin_left + 69 * (radius + 1), margin_top, 10, context);
  renderDigit(margin_left + 78 * (radius + 1), margin_top, parseInt(seconds / 10), context);
  renderDigit(margin_left + 93 * (radius + 1), margin_top, parseInt(seconds % 10), context);
}
function renderDigit(x, y, num, context) {
  context.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) {
        context.beginPath();
        // 第(i,j)个圆的圆心位置
        context.arc(x + j * 2 * (radius + 1) + (radius + 1), y + i * 2 * (radius + 1) + (radius + 1), radius, 0, 2 * Math.PI);
        context.closePath();
        context.fill();
      }
    }
  }
}


正在回答

3 回答

试试把天数改成比现在的天数大

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

补充一下,不是ret值不能太大,是Math.round(ret/100000)这个值保持在5位数字以下

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

巨好看的丑娃

还是不行啊
2020-01-05 回复 有任何疑惑可以回复我~

我们程序员呢,最忌讳的是遇事紧张,着急。应该遇到事情先让自己冷静下来,一步一步查看。init开始,一步一步打印我们需要的值,看下来发现是 currentShowTimeSeconds 值太大,导致render函数中hours、minutes、seconds三个常量太大,进而导致函数renderDigit中参数num太大,找不到digit数组中的元素,最后显示你看到的样子,解决方法:函数getCurrentShowTimeSeconds中的ret/1000改为 ret/100000, ret不能太大,保持在5位数字一下就好。有什么错误的地方,请各位同行多多指教

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

举报

0/150
提交
取消

请问这里哪里出问题了

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