javascript - 如何使用图像按钮启动此计时器?
问题描述
我有一个 30 秒的计时器和一个图像。我希望计时器仅在单击图像时才开始,即图像按钮 - 我该怎么做?
这就是我目前拥有计时器的方式,并在页面本身上显示:
<h2>Countdown left: <span id="timer"></span></h2>
这是图像:
<img id="img" src="image.gif" />
我的计时器是 JS:
var seconds = 30;
var countdown = setInterval(function() {
seconds--;
document.getElementById("countdown").textContent = seconds;
if (seconds <= 0) clearInterval(countdown);
}, 1000);
我怎样才能将两者结合起来?
解决方案
您可以向图像添加click
事件侦听器,这将启动计时器。另外,我已经添加{once: true}
了该函数,以便该函数只执行一次(否则它会破坏计时器)。
document.querySelector("#img").addEventListener("click", () => {
var countdown;
var seconds = 30;
countdown = setInterval(function() {
seconds--;
document.getElementById("timer").textContent = seconds;
if (seconds <= 0) clearInterval(countdown);
}, 1000)
},{ once: true});
<h2>Countdown left: <span id="timer"></span></h2>
<img id="img" src="https://assets.stickpng.com/thumbs/59060d740cbeef0acff9a660.png" />
如果要在每次单击时重置计时器,则需要clearInterval
在设置另一个计时器之前。
var countdown;
document.querySelector("#img").addEventListener("click", () => {
if (countdown) {
clearInterval(countdown);
}
var seconds = 30;
countdown = setInterval(function() {
document.getElementById("timer").textContent = seconds;
seconds--;
if (seconds <= 0) clearInterval(countdown);
}, 1000)
});
<h2>Countdown left: <span id="timer"></span></h2>
<img id="img" src="https://assets.stickpng.com/thumbs/59060d740cbeef0acff9a660.png" />
推荐阅读
- math - 真的千里马解决不了吗?
- machine-learning - python中的相关矩阵在哪个基础上具有特征?
- javascript - 如何在谷歌地图的彩色多边形上显示街道编号?
- xamarin.forms - Xamarin Forms:如何从 SwipeStarted 事件中获取 SwipeDirection 值?
- perl - 如何让 perl 网络爬虫像 wget 一样进行“广度优先”检索?
- mysql - 在 MySQL 中创建一个将数据显示为报告的查询
- php - jQuery 显示功能
- python - 我能够在 heroku 上构建我的 django web 应用程序,但是在启动它时显示这些错误(错误日志如下所示)
- java - java.lang.LIKE_FOR_NO_REASON.ArrayIndexOutOfBoundsException
- laravel - 如何解决 Laravel 中的自动注销问题