我对这段代码有点麻烦。我目前有一个按钮,点击时启动一个计时器。然后它还会将按钮的图标从开始图标更改为停止图标。我想在再次点击按钮时停止此计时器并让它从开始到停止切换回图标。我已经被困了一段时间并尝试了很多东西但是无法让它工作并且会感激任何帮助。我确信它是一个简单的问题,我只是刚接触javascript。谢谢。
(function () {
"use strict";
var minutesLabel = document.getElementById('t1-min'),
secondsLabel = document.getElementById('t1-sec'),
resetButton = document.getElementById('t1-reset'),
startButton = document.getElementById('t1-play'),
timer = null;
function getTimeRemaining(endtime) {
var t = Date.parse(endtime) - Date.parse(new Date());
var seconds = Math.floor((t / 1000) % 60);
var minutes = Math.floor((t / 1000 / 60) % 60);
return {
'total': t,
'minutes': minutes,
'seconds': seconds
};
}
function initializeClock(endtime) {
var timeinterval = setInterval(function () {
var t = getTimeRemaining(endtime);
if (t.total <= 0) {
clearInterval(timeinterval);
}
minutesLabel.innerHTML = t.minutes;
secondsLabel.innerHTML = pad(t.seconds);
}, 1000);
}
startButton.onclick = function runClock() {
var timeInMinutes = minutesLabel.innerHTML,
currentTime = Date.parse(new Date()),
deadline = new Date(currentTime + timeInMinutes * 60 * 1000);
initializeClock(deadline);
startButton.innerHTML = ('<i class="far fa-stop-circle fa-2x float-right">');
}
function pad(val) {
var valString = val + "";
if (valString.length < 2) {
return "0" + valString;
} else {
return valString;
}
}
})();
答案 0 :(得分:0)
首先,通过在startButton
方法上添加一个函数,确保事件监听器正确放置在addEventLister
元素上:
startButton.addEventListener("click", function() {
//code goes here
});
然后初始化代码的全局范围中的timeinterval
变量,以便可以从所有函数访问它,并添加const
,您可以在其中保存startButton
的初始文字:
(function () {
"use strict";
const START_BUTTON_INITIAL_TEXT = "Start"; // initial constant text of the start button
var minutesLabel = document.getElementById('t1-min'),
secondsLabel = document.getElementById('t1-sec'),
resetButton = document.getElementById('t1-reset'),
startButton = document.getElementById('t1-play'),
timer = null,
timeinterval; // declared in the global scope
然后为id
图标元素添加等于t1-stop
的{{1}},以确保来自DOM的Javascript文件可以准确访问它:
stopButton
最后在startButton.innerHTML = ('<i id="t1-stop" class="far fa-stop-circle fa-2x float-right">');
addEventListener
函数中添加此if语句,以检查点击startButton
时DOM中是否存在停止按钮:
startButton
上面的代码会停止startButton.addEventListener("click", function() {
if (document.getElementById("t1-stop") != null) {
clearInterval(timeinterval);
var stopButton = document.getElementById("t1-stop");
startButton.removeChild(stopButton);
startButton.innerHTML = START_BUTTON_INITIAL_TEXT;
}
并从DOM中移除timeinterval
,然后替换stopButton
的{{1}},并将初始文本设置为顶部变量的常量声明。
总而言之,innerHTML
的事件监听器功能看起来应该是这样的:
startButton