Javascript计时器在启动时收到错误

时间:2016-08-07 03:26:53

标签: javascript html web

输入:

function timer() {
  decimal++;
  cs++;
  decimalOut.innerHTML = decimal;
  if (decimal >= 100) {
    decimal = 0;
    sec++;

    if (sec > 59) {
      sec = 0;
      min++;
      colon.innerHTML = ":";
      minOut.innerHTML = min;
    }
    if (sec <= 9 && min > 0) {
      sec = "0" + sec;
    }
    secOut.innerHTML = sec;
  }

  if (decimal <= 9) {
    decimal = '0' + decimal;
    decimalOut.innerHTML = decimal;
  }

}
window.onkeyup = run;

function run() {
  if (!running) {
    decimal = 0;
    sec = 0;
    min = 0;
    cs = 0;
    secOut.innerHTML = "0";
    minOut.innerHTML = "";
    colon.innerHTML = "";
    running = true;
    scramble = "";
    generateScramble();
    interval = setInterval(timer, 10);
  } else if (running) {
    running = false;
    clearInterval(interval);
    timesDisplay.push(" " + timesOut.innerHTML);
    csTimes.push(cs);
    timesList.innerHTML = timesDisplay;
    calculateStats();
  }
}

输出:

  

未捕获的TypeError:无法设置null(...)

的属性'innerHTML'

这个错误应该发生在第350行,即:

<div id="basicallyaholderthing" style="position:absolute;left:0px;top:718px;width:801px;height:545px;z-index:11">

我也有一席之地:

<div id="timeOut"><span id="min"></span><span id="colon"></span><span id="sec">0</span>.<span id="decimal">00</span></div></br>

我已将输出放在html持有者的位置。根据错误,它只是不起作用。有人对此有所了解吗?

UPDATE *

以下是大多数设置变量的列表。

var running = false;
var interval;
var decimal = 0;
var sec = 0;
var min = 0;
var cs = 0;
var decimalOut = document.getElementById("decimal");
var secOut = document.getElementById("sec");
var minOut = document.getElementById("min");
var colon = document.getElementById("colon");
var timesOut = document.getElementById("timeOut");
var timesList = document.getElementById("timeList");
var clearAll = document.getElementById("clear");
var timesDisplay = new Array();
var csTimes = new Array();
var avAll = 0;
var avAllOut = document.getElementById("overallAv");
var best = 999999999999999999;
var bestOut = document.getElementById("fastest");
var worst = 0;
var numSolves = 0;
var total = 0;
var numSolvesOut = document.getElementById("solveNum");

2 个答案:

答案 0 :(得分:1)

您的错误告诉您确切的问题:

  

未捕获的TypeError:无法设置null(...)

的属性'innerHTML'

它指的是以下其中一条:

decimalOut.innerHTML = decimal;

因此,decimalOut设置为null

如果没有在一个地方看到所有代码,很难知道100%的原因,但最可能的原因是您的初始化代码:

var decimalOut = document.getElementById("decimal");

如果这导致它被设置为null,则意味着:

  1. 您的DOM中没有ID为decimal
  2. 的元素
  3. 您的初始化脚本在元素输出到页面之前运行,这与#1基本相同。例如,如果您的脚本位于文档的head而不是正文的底部,则通常会发生这种情况。
  4. 我强烈建议您学习使用步骤调试器(例如,在Chrome开发工具中),这样您就可以在代码运行时以交互方式检查每个变量;这应该有助于你了解正在发生的事情。

答案 1 :(得分:0)

  

试试这个

您必须将完整代码放入javaScript的onload function()中

window.onload = function() {
   // your code
}