如何防止workTicker和breakTicker函数进入负数



我正在研究番茄钟。申请几乎完成;但是,当加减数字时,数字可能会变为负数。那不是欲望。workTicker和breakTicker函数负责这一点。我实现了一个 if 语句来检查数字是否比 1>。但是当数字 = 1 时,它将不再执行。我该如何实现?谢谢代码笔:https://codepen.io/zentech/pen/vJGdjN JavaScript/jquery

$(document).ready(function() {
//variables
var session;
var seconds;
var minutes; 
var clockDisplay = document.getElementById("display"); 
var counterId = 0;
var state = "work";
var start; //getting start time 
//start / stop clock listener functionality
$("#start").click(function() {
var value = $(".button").text();
console.log(value);
if(value == "Start") {
session = Number($(".work").text() * 60);
start = new Date().getTime();
state = "work";
console.log("started!");
//starting counter
counterId = setInterval(countDown, 1000);
$("#session").text("Work");
$(".button").text("Stop");
} else {
console.log("stopped");
// | 0 same as Number()
session = (($(".work").text() * 60) | 0);
//clear counter
clearInterval(counterId);
clockDisplay.innerHTML = (session/60) +":00";  
$("#session").text("Session");
$(".button").text("Start");
}  
});
//add work time
$('.plusWork').click(function() {
var value = "plus";
console.log(value);
workTicker(value);
});
//substract work time
$('.minWork').click(function() {
var value = "minus";
workTicker(value);
});
//add break time
$('.plusBreak').click(function() {
var value = "plus";
breakTicker(value);
});
//substract break time
$('.minBreak').click(function() {
var value = "minus";
breakTicker(value);
});
//work countdown timer function
function countDown() {
//getting time now in ms
var now = new Date().getTime();
/*difference since clock started. now and start are in ms
we need to / by 1000 to bring to sec*/
var diff = Math.floor(session - ((now - start) / 1000));
console.log("diff: "+diff+" min: "+Math.floor(diff/60)+" sec: "+Math.floor(diff%60));
//getting minutes
minutes = Math.floor((diff / 60));
//getting seconds
seconds = Math.floor((diff % 60));
//dealing with minutes and sec under 10: 09, 07...
minutes = (minutes < 10) ? "0"+minutes : minutes;
seconds = (seconds < 10) ? "0"+seconds : seconds;
//update clock display
clockDisplay.innerHTML = minutes+":"+seconds;
//if difference reached < 0 stop counter;
if(diff == 0) {    
restartSession(state);
}  
}
//add substract work from timer/display
function workTicker(value) {
var min = Number($('.work').text());
//add substract while min > 0
if(min > 1) {
(value == "plus") ? min++ : min--;
clockDisplay.innerHTML = min+":00";
$(".work").text(min);
console.log(min);
}  
}
//add substract break time 
function breakTicker(value) {
var min = Number($(".break").text());
//add substract as long as min > 0
if(min > 1) {
(value == "plus") ? min++ : min--;
$(".break").text(min);
}    
}
//restart countdown clock 
function restartSession(state) {
//if state is work, change to break and visebersa
if(state == "work") {
alert("Stop working!");
$("#session").text("Break")
session = $(".break").text();
} else {
alert("Get to work!");
$("#session").text("Work");
session = $(".work").text();
}
clearInterval(counterId); //clear counter
console.log("session: "+session+" state: "+state);
start = new Date().getTime(); //setting start time
session = Number(session * 60); //converting min to sec
state = state == "work" ? "break" : "work";
counterId = setInterval(countDown, 1000); //starting counter
}
});

尝试仅在用户尝试减去...

function breakTicker(value) {
var min = Number($(".break").text());
//add substract as long as min > 0
if(value == "plus") {
min++ 
} else {
if(min > 1){
min--;
}
}
$(".break").text(min);  
}

代码笔:https://codepen.io/anon/pen/VzmLLd

最新更新