【发布时间】:2022-01-14 01:07:22
【问题描述】:
我想在“startTimer”中调用函数“displayTime”,但由于某种原因,我在控制台中收到“Uncaught TypeError: this.displayTime is not a function”。
let endTimer = "0";
let isRunning = false;
//! CLASS
class Timer {
constructor(endTimer, isRunning) {
this.endTimer = endTimer;
this.isRunning = isRunning;
}
startTimer() {
if (this.endTimer === "0") {
this.endTimer = new Date().getTime() + 1500000;
}
displayTime();
if (this.isRunning === true) {
this.pauseTimer();
this.isRunning
}
this.isRunning = true;
}
displayTime() {
let now = new Date().getTime();
let remainingTime = this.endTimer - now;
let minutes = Math.floor(remainingTime / 1000 / 60);
let seconds = Math.floor((remainingTime / 1000) % 60);
if (seconds < 10) {
seconds = "0" + seconds;
}
timer.innerHTML = `<h1>${minutes}:${seconds}</h1>`;
start.textContent = "STOP"
this.update = setInterval(this.displayTime, 100);
}
}
let newTimer = new Timer(endTimer, isRunning);
//! EVENT LISTENERS
start.addEventListener("click", newTimer.startTimer);
我认为我遗漏了一些明显的东西,但我不明白什么......
【问题讨论】:
-
您是否尝试将其引用为
this.displayTime()? -
这有一个重复,但 TL;DR 是当您将
startTimer函数引用传递给addEventListener时,它与类分离 -
感谢您的建议,成功了!
标签: javascript class