- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的倒计时器来显示 45 秒的倒计时。我试图使用 JavaScript onclick 函数通过两个按钮来控制这个计时器。一键启动计时器,一键停止计时器。我能够开始计时并将其显示在屏幕上,但无法停止它。我在网上找到了时间脚本并将其修改为仅显示秒。
我尝试创建一个全局 ID(在本例中为“var xx;”)来清除间隔,但没有成功。我不确定缺少什么。以下是我使用 Bootstrap 4 编写的代码的重要部分。
// create a global variable to reset the interval later
var xx;
// Visible Coundown 45s function
function VisibleCountDownTimer45s() {
// reset internval if it is already in defined.
if(xx != undefined) {
clearInterval(xx)
};
// Set the date we're counting down to
var countDownDate = new Date().getTime() + 45000;
// Update the count down every 1 second
var xx = setInterval(function() {
// Get today's date and time
var now = new Date().getTime();
// Find the distance between now and the count down date
var distance = countDownDate - now;
// console.log (distance);
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Display the result in the element with id="demo"
document.getElementById("demo").innerHTML = seconds + "s ";
// If the count down is finished, write some text
if (distance < 0) {
clearInterval(xx);
document.getElementById("demo").innerHTML = "";
}
}, 1000);
}
<!-- timer display box -->
<div class="container">
<div class="row mb-3">
<div class="col-md-4"> </div>
<div class="col-md-4 text-center pb-3" id="demo"><span class="border border-secondary p-2">show timer here</span></div>
<div class="col-md4"> </div>
</div>
</div>
<!-- control buttons -->
<div class="container">
<div class="row">
<div class="col-md-4 text-right"><button class="btn btn-primary" onclick="VisibleCountDownTimer45s()">Start visible Timer</button></div>
<div class="col-md-4 text-center" id="Counter"><p> </p></div>
<div class="col-md4 text-left"><button class="btn btn-primary" onclick="clearInterval(xx)">Stop visible Timer</button></div>
</div>
</div>
最佳答案
您的问题是在您的 VisibleCountDownTimer45s()
函数内部,您正在重新声明一个名为 xx 的本地范围变量。删除其中的 var 关键字,您将把计时器分配给其他函数可以访问的全局 xx 变量。这被称为 scope问题。
更改:var xx = setInterval(function() {
至:xx = setInterval(function() {
看这个:
// create a global variable to reset the interval later
var xx;
// Visible Coundown 45s function
function VisibleCountDownTimer45s() {
// reset internval if it is already in defined.
if (xx != undefined) {
clearInterval(xx)
};
// Set the date we're counting down to
var countDownDate = new Date().getTime() + 45000;
// Update the count down every 1 second
xx = setInterval(function() {
// Get today's date and time
var now = new Date().getTime();
// Find the distance between now and the count down date
var distance = countDownDate - now;
// console.log (distance);
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Display the result in the element with id="demo"
document.getElementById("demo").innerHTML = seconds + "s ";
// If the count down is finished, write some text
if (distance < 0) {
clearInterval(xx);
document.getElementById("demo").innerHTML = "";
}
}, 1000);
}
<div class="container">
<div class="row mb-3">
<div class="col-md-4"> </div>
<div class="col-md-4 text-center pb-3" id="demo"><span class="border border-secondary p-2">show timer here</span></div>
<div class="col-md4"> </div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4 text-right"><button class="btn btn-primary" onclick="VisibleCountDownTimer45s()">Start visible Timer</button></div>
<div class="col-md-4 text-center" id="Counter">
<p> </p>
</div>
<div class="col-md4 text-left"><button class="btn btn-primary" onclick="clearInterval(xx)">Stop visible Timer</button></div>
</div>
</div>
还值得注意的是,您可以在不使用 Date 对象并计算相对于它的耗时的情况下获得相同的结果。
let timer;
function startTimer(interval) {
if (timer !== undefined) {
clearInterval(timer);
};
timer = setInterval(function() {
interval -= 1000
if (interval <= 0) {
clearInterval(timer);
document.getElementById("demo").innerHTML = "";
} else {
const seconds = Math.floor(interval / 1000);
document.getElementById("demo").innerHTML = seconds + "s ";
}
}, 1000);
}
<div class="container">
<div class="row mb-3">
<div class="col-md-4"> </div>
<div class="col-md-4 text-center pb-3" id="demo"><span class="border border-secondary p-2">show timer here</span></div>
<div class="col-md4"> </div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4 text-right"><button class="btn btn-primary" onclick="startTimer(45000)">Start visible Timer</button></div>
<div class="col-md-4 text-center" id="Counter">
<p> </p>
</div>
<div class="col-md4 text-left"><button class="btn btn-primary" onclick="clearInterval(timer)">Stop visible Timer</button></div>
</div>
</div>
关于javascript - 停止倒计时器故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59602910/
我想在 android 中扫描黑底白字条码。我使用过 zxing,它允许我只扫描白底黑字。我如何扫描和倒置条形码或使用哪个库?感谢您的帮助。 最佳答案 如果您仍在引用 journeyapps 嵌入式
所以我在 youtube 上观看了一些介绍性类(class)以学习 OpenGL 的基础知识并学习了诸如制作三角形和简单相机类等内容。我一直想尝试制作体素引擎,这显然是第一个我想做的是一个我最终可以复
这个问题在这里已经有了答案: Div with cut out edges, border and transparent background (6 个答案) 关闭 8 年前。
我有一张图片,我正在查看用 HTML 创建的小型网站的基本定制。 我知道您可以对图像进行倒 Angular 处理,如 this question here 中所示,这给出了 45 度切割。 我希望每个
我必须在 iOS 上创建一个自定义形状(倒 T)边框的 Uiview。我附上下面的截图。我进行了很多研究,找到了一种使用 here 中的 UIBezierPath 的方法. 但我不知道如何将我的 Vi
我是一名优秀的程序员,十分优秀!