如何在 JavaScript 中设置计时器持续时间
How to set timer duration in JavaScript?
我的计时器有一些问题。更改计时器持续时间时,我无法使计时器从新的持续时间开始。我该如何解决这个问题?请帮忙。这是我的代码:
.CSS:
div {
float: left;
width: 100px;
height: 100px;
border: 1px solid;
text-align: center;
}
.HTML:
<div class='session'>2</div>
<div id='increase' onclick='decrease()'>-</div>
<div id='increase' onclick='increase()'>+</div>
<div class='session' id='session' onclick='setInterval(changeSessionDuration,100)'>2</div>
.JS:
var x = document.getElementsByClassName('session');
var seconds = 60;
function increase() {
for (var i = 0; i < x.length; i++) {
x[i].innerHTML++;
}
}
function decrease() {
for (var i = 0; i < x.length; i++) {
if (x[i].innerHTML > 0) {
x[i].innerHTML--;
}
}
}
var session = x[1].innerHTML - 1;
function changeSessionDuration() {
if (seconds > 0) {
seconds--;
if (seconds == 0 && session > 0) {
session--;
seconds = 60;
}
}
x[1].innerHTML = session + ':' + seconds;
}
如果我
正确理解您的问题,您的计时器没有在您事先添加计时器正在运行的正确时间启动?
如果是这样,那是因为这行:
var session = x[1].innerHTML - 1;
会话的值在您递增/递减时间之前已经设置好。
您应该在递增/递减之后或开始运行之前设置会话的值,如下所示:
<div class='session' id='session' onclick='setSession(); setInterval(changeSessionDuration,100);'>2</div>
JS将是:
var x = document.getElementsByClassName('session');
var seconds = 60;
function increase() {
for (var i = 0; i < x.length; i++) {
x[i].innerHTML++;
}
}
function decrease() {
for (var i = 0; i < x.length; i++) {
if (x[i].innerHTML > 0) {
x[i].innerHTML--;
}
}
}
var session;
function setSession(){
session = x[1].innerHTML - 1;
}
function changeSessionDuration() {
if (seconds > 0) {
seconds--;
if (seconds == 0 && session > 0) {
session--;
seconds = 60;
}
}
x[1].innerHTML = session + ':' + seconds;
}
而且我的示例代码很脏,您应该适合您的口味。
发生这种情况是因为您没有清除先前设置的间隔。您需要在 javascript 单击事件侦听器中创建间隔。如果您只使用一个位置打印秒,下面的代码可以工作
var x=document.getElementsByClassName('session'),
interval;
x[0].addEventListener('click', function(){
if(interval){
clearInterval(interval);
}
interval = setInterval(changeSessionDuration,100)
}, false);
var seconds=60;
function increase(){
for (var i=0;i<x.length;i++){
x[i].innerHTML++;
}
}
function decrease(){
for (var i=0;i<x.length;i++){
if(x[i].innerHTML>0){
x[i].innerHTML--;
}
}
}
var session=x[0].innerHTML-1;
function changeSessionDuration(){
if (seconds>0){
seconds--;
if(seconds==0 && session>0){
session--;
seconds=60;
}
}
x[0].innerHTML=session +':'+seconds;
}
相关文章:
- 在JS中设置计时器1秒
- 设置计时器并使用javascript/PHP进行检查
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何设置计时器以显示警报消息并将该警报消息与另一条警报消息重叠
- 如何使用javascript设置计时器
- 如何在控制器中设置计时器
- 如何在 JavaScript 中设置计时器持续时间
- 如何在 ajax javascript 中设置计时器控件
- 我正在设置计时器,但我以错误的方式进行.所以请给我更好的方法来做到这一点
- 如何在分页PHP中设置计时器
- 在 cocos2d-x js 中设置计时器
- 在异步调用返回后设置计时器
- 如何在mootools中设置计时器
- 为我的游戏设置计时器
- 在调用函数时用javascript设置计时器
- 我如何设置计时器在太平洋标准时间每天中午12点结束
- 为慢速URL引用设置计时器/限制的任何方法
- 如何使用Vue.js类设置计时器
- 考试时如何设置计时器
- 如何在元素上设置计时器,使其淡出,并在元素被单击打开时重置计时器