자바 스크립트 카운트 다운 타이머가 있습니다. 내가해야 할 일은 카운트 다운 타이머가 실행되는 동안 타이머에 1 분 또는 몇 초를 추가 할 수있는 것입니다!
예를 들어 분을 1 분으로 설정하고 시작 버튼을 누르면 카운트 다운 타이머가 정상적으로 시작되지만 실행 중 타이머에 1 분을 더 추가하면 (예 : 32 초가 켜져있을 때) 값이 추가되지 않습니다. 추가 된 첫 1 분의 나머지를 계속 카운트 다운하고 어떤 이유로 든 카운트 다운 속도를 높이기 만하면됩니다!
나는 너희들을 혼란스럽게하지 않았 으면한다. 다음은 코드입니다.
<form>
Minutes: <input type="text" id="mns" name="mns" value="0" size="3" maxlength="3" /> Seconds: <input type="text" id="scs" name="scs" value="0" size="2" maxlength="2" /><br/>
<input type="button" id="btnct" value="START" onclick="countdownTimer()"/>
</form>
Countdown Timer: <span id="showmns">00</span>:<span id="showscs">00</span>
<script type="text/javascript"><!--
/* Function to display a Countdown timer with starting time from a form */
// sets variables for minutes and seconds
var ctmnts = 0;
var ctsecs = 0;
var startchr = 0; // used to control when to read data from form
function countdownTimer() {
// http://coursesweb.net/javascript/
// if $startchr is 0, and form fields exists, gets data for minutes and seconds, and sets $startchr to 1
if(startchr == 0 && document.getElementById('mns') && document.getElementById('scs')) {
// makes sure the script uses integer numbers
ctmnts = parseInt(document.getElementById('mns').value) + 0;
ctsecs = parseInt(document.getElementById('scs').value) * 1;
// if data not a number, sets the value to 0
if(isNaN(ctmnts)) ctmnts = 0;
if(isNaN(ctsecs)) ctsecs = 0;
// rewrite data in form fields to be sure that the fields for minutes and seconds contain integer number
document.getElementById('mns').value = ctmnts;
document.getElementById('scs').value = ctsecs;
startchr = 1;
}
// if minutes and seconds are 0, sets $startchr to 0, and return false
if(ctmnts==0 && ctsecs==0) {
startchr = 0;
document.getElementById('btnct').removeAttribute('disabled'); // remove "disabled" to enable the button
/* HERE YOU CAN ADD TO EXECUTE A JavaScript FUNCTION WHEN COUNTDOWN TIMER REACH TO 0 */
return false;
}
else {
// decrease seconds, and decrease minutes if seconds reach to 0
ctsecs--;
if(ctsecs < 0) {
if(ctmnts > 0) {
ctsecs = 59;
ctmnts--;
}
else {
ctsecs = 0;
ctmnts = 0;
}
}
}
// display the time in page, and auto-calls this function after 1 seccond
document.getElementById('showmns').innerHTML = ctmnts;
document.getElementById('showscs').innerHTML = ctsecs;
setTimeout('countdownTimer()', 1000);
}
//-->
</script>
어떤 도움을 주시면 감사하겠습니다.
카운터 번호를 총 시간 (초)의 단일 값으로 취급하고 현재 값으로 변환하거나 (즉, 초기 입력을받을 때 또는 현재 값을 표시 할 때) 분과 초에 대해서만 걱정하십시오.
매분 엔딩이나 패딩 번호에 대한 특별한 경우를 확인할 필요가없는 작업 예제는 http://jsfiddle.net/alnitak/aBWce/ 를 참조하십시오 .
당신의 return false
라인은 아무 작업도하지 않습니다. 콜백 함수의 반환 값은 무시됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다