Помощь с секундомером
Нашел интересный скрипт, как раз то что мне нужно, но в скрипте косяк при нажатии пауза он секундомер не останавливается, а продолжает отсчитывать секунды.
вот сам код: <html> <head> <script language="javascript"> var base = 60; var clocktimer,dateObj,dh,dm,ds,ms; var readout=''; var h=1; var m=1; var tm=1; var s=0; var ts=0; var ms=0; var show=true; var init=0; var mPLUS=new Array( 'm0', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9' ); var ii=0; function clearALL() { clearTimeout(clocktimer); h=1;m=1;tm=1;s=0;ts=0;ms=0; init=0;show=true; readout='00:00:00.00'; document.clockform.clock.value=readout; var CF = document.clockform; for (ij=0;ij<=9;ij++) { CF[mPLUS[ij]].value = ''; } ii = 0; } function addMEM() { if (init>0) { var CF = document.clockform; CF[mPLUS[ii]].value = readout; if (ii==9) { ii = 0; } else { ii++; } } } function startTIME() { var cdateObj = new Date(); var t = (cdateObj.getTime() - dateObj.getTime())-(s*1000); if (t>999) { s++; } if (s>=(m*base)) { ts=0; m++; } else { ts=parseInt((ms/100)+s); if(ts>=base) { ts=ts-((m-1)*base); } } if (m>(h*base)) { tm=1; h++; } else { tm=parseInt((ms/100)+m); if(tm>=base) { tm=tm-((h-1)*base); } } ms = Math.round(t/10); if (ms>99) {ms=0;} if (ms==0) {ms='00';} if (ms>0&&ms<=9) { ms = '0'+ms; } if (ts>0) { ds = ts; if (ts<10) { ds = '0'+ts; }} else { ds = '00'; } dm=tm-1; if (dm>0) { if (dm<10) { dm = '0'+dm; }} else { dm = '00'; } dh=h-1; if (dh>0) { if (dh<10) { dh = '0'+dh; }} else { dh = '00'; } readout = dh + ':' + dm + ':' + ds + '.' + ms; if (show==true) { document.clockform.clock.value = readout; } clocktimer = setTimeout("startTIME()",1); } function findTIME() { if (init==0) { dateObj = new Date(); startTIME(); init=1; } else { if(show==true) { show=false; } else { show=true; } } } </script> <title></title> </head> <body> <form name="clockform"> <table border="0" cellpadding="2" cellspacing="0"> <tbody> <tr> <td><input name="clearer" value=" reset " onclick="clearALL()" type="button"></td> <td><input name="clock" size="12" value="00:00:00.00"></td> </tr> <tr> <td><input name="marker" value=" m + " onclick="addMEM()" type="button"></td> <td><input name="starter" value="start / pause" onclick="findTIME()" type="button"></td> </tr> <tr> <td><b>m 0</b></td> <td><input name="m0" size="12"></td> </tr> <tr> <td><b>m 1</b></td> <td><input name="m1" size="12"></td> </tr> <tr> <td><b>m 2</b></td> <td><input name="m2" size="12"></td> </tr> <tr> <td><b>m 3</b></td> <td><input name="m3" size="12"></td> </tr> <tr> <td><b>m 4</b></td> <td><input name="m4" size="12"></td> </tr> <tr> <td><b>m 5</b></td> <td><input name="m5" size="12"></td> </tr> <tr> <td><b>m 6</b></td> <td><input name="m6" size="12"></td> </tr> <tr> <td><b>m 7</b></td> <td><input name="m7" size="12"></td> </tr> <tr> <td><b>m 8</b></td> <td><input name="m8" size="12"></td> </tr> <tr> <td><b>m 9</b></td> <td><input name="m9" size="12"></td> </tr> </tbody> </table> </form> </body> </html> Подскажите как справиться с данной проблемой? |
Цитата:
<html> <head> <script language="javascript"> var base = 60; var clocktimer, dateObj, dh, dm, ds, ms; var readout = ''; var h = 1; var m = 1; var tm = 1; var s = 0; var ts = 0; var ms = 0; var show = true; var init = 0; var mPLUS = new Array('m0', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9'); var ii = 0; var pause = 0; function clearALL() { clearTimeout(clocktimer); h = 1; m = 1; tm = 1; s = 0; ts = 0; ms = 0; init = 0; show = true; readout = '00:00:00.00'; document.clockform.clock.value = readout; var CF = document.clockform; for (ij = 0; ij <= 9; ij++) { CF[mPLUS[ij]].value = ''; } ii = 0; } function addMEM() { if (init > 0) { var CF = document.clockform; CF[mPLUS[ii]].value = readout; if (ii == 9) { ii = 0; } else { ii++; } } } function startTIME() { var cdateObj = new Date(); var t = (cdateObj.getTime() - dateObj.getTime()) - (s * 1000); if (t > 999) { s++; } if (s >= (m * base)) { ts = 0; m++; } else { ts = parseInt((ms / 100) + s); if (ts >= base) { ts = ts - ((m - 1) * base); } } if (m > (h * base)) { tm = 1; h++; } else { tm = parseInt((ms / 100) + m); if (tm >= base) { tm = tm - ((h - 1) * base); } } ms = Math.round(t / 10); if (ms > 99) { ms = 0; } if (ms == 0) { ms = '00'; } if (ms > 0 && ms <= 9) { ms = '0' + ms; } if (ts > 0) { ds = ts; if (ts < 10) { ds = '0' + ts; } } else { ds = '00'; } dm = tm - 1; if (dm > 0) { if (dm < 10) { dm = '0' + dm; } } else { dm = '00'; } dh = h - 1; if (dh > 0) { if (dh < 10) { dh = '0' + dh; } } else { dh = '00'; } readout = dh + ':' + dm + ':' + ds + '.' + ms; document.clockform.clock.value = readout; if (show == true) { clocktimer = setTimeout("startTIME()", 10); } } function findTIME() { if (init == 0) { dateObj = new Date(); startTIME(); init = 1; } else { if (show == true) { show = false; pause = new Date(); } else { show = true; dateObj = new Date(dateObj.getTime() + (new Date()).getTime() - pause.getTime()); startTIME(); } } } </script> <title></title> </head> <body> <form name="clockform"> <table border="0" cellpadding="2" cellspacing="0"> <tbody> <tr> <td><input name="clearer" value=" reset " onclick="clearALL()" type="button"></td> <td><input name="clock" size="12" value="00:00:00.00"></td> </tr> <tr> <td><input name="marker" value=" m + " onclick="addMEM()" type="button"></td> <td><input name="starter" value="start / pause" onclick="findTIME()" type="button"></td> </tr> <tr> <td><b>m 0</b></td> <td><input name="m0" size="12"></td> </tr> <tr> <td><b>m 1</b></td> <td><input name="m1" size="12"></td> </tr> <tr> <td><b>m 2</b></td> <td><input name="m2" size="12"></td> </tr> <tr> <td><b>m 3</b></td> <td><input name="m3" size="12"></td> </tr> <tr> <td><b>m 4</b></td> <td><input name="m4" size="12"></td> </tr> <tr> <td><b>m 5</b></td> <td><input name="m5" size="12"></td> </tr> <tr> <td><b>m 6</b></td> <td><input name="m6" size="12"></td> </tr> <tr> <td><b>m 7</b></td> <td><input name="m7" size="12"></td> </tr> <tr> <td><b>m 8</b></td> <td><input name="m8" size="12"></td> </tr> <tr> <td><b>m 9</b></td> <td><input name="m9" size="12"></td> </tr> </tbody> </table> </form> </body> </html> |
рони, я даже смотреть не стал. Автор создает уже третью аналогичную тему.
Обратный таймер Таймер нужна помощь |
Вариант таймера ... немного его перекомпоновал ... добавил клавиши клавиатуры как в варианте FINoM, Старт/пауза (Пробел или Enter) Новый вариант (Esc) ... основное достоинство выводит точно (максимально возможное в данном коде) время при нажатии на паузу или кнопку M+ независимо от выставленной паузы в setTimeout("startTIME()", 50) ... можно следовательно снизить нагрузку на процессор точность не потеряется ...
<html> <head> <script language="javascript"> var clocktimer, dateObj, dh, dm, ds, ms, readout = "", show = !0, init = 0, ii = 0, pause = 0; function clearALL() { clearTimeout(clocktimer); init = 0; readout = "00:00:00.00"; document.clockform.clock.value = readout; var a = document.clockform; for (ij = 0; 10 > ij; ij++) a["m" + ij].value = ""; ii = 0 } function addMEM() { if (!0 == show ) clearTimeout(clocktimer), startTIME(), document.clockform["m" + ii].value = readout, ii = ++ii % 10 } function startTIME() { var a = new Date((new Date).getTime() - dateObj.getTime()); dh = ("0" + a.getUTCHours()).replace(/.+?(\d{2})$/, "$1"); dm = ("0" + a.getUTCMinutes()).replace(/.+?(\d{2})$/, "$1"); ds = ("0" + a.getUTCSeconds()).replace(/.+?(\d{2})$/, "$1"); ms = ("0" + (a.getUTCMilliseconds() / 5 >> 1)).replace(/.+?(\d{2})$/, "$1"); readout = dh + ":" + dm + ":" + ds + "." + ms; document.clockform.clock.value = readout; !0 == show && (clocktimer = setTimeout("startTIME()", 50)) } function findTIME() { 0 == init ? (dateObj = new Date, init = 1, show = !0) : !0 == show ? (clearTimeout(clocktimer), show = !1, pause = new Date) : (show = !0, dateObj = new Date(dateObj.getTime() + (new Date).getTime() - pause.getTime())); startTIME() }; document.onkeypress = function (a) { a = window.event ? window.event.keyCode : a.which; (13 == a || 32 == a) && findTIME(); 27 == a && clearALL() }; </script> <title></title> </head> <body> <form name="clockform"> <table border="0" cellpadding="2" cellspacing="0"> <tbody> <tr> <td><input name="clearer" value=" reset " onclick="clearALL()" type="button"></td> <td><input name="clock" size="12" value="00:00:00.00"></td> </tr> <tr> <td><input name="marker" value=" m + " onclick="addMEM()" type="button"></td> <td><input name="starter" value="start / pause" onclick="findTIME()" type="button"></td> </tr> <tr> <td><b>m 0</b></td> <td><input name="m0" size="12"></td> </tr> <tr> <td><b>m 1</b></td> <td><input name="m1" size="12"></td> </tr> <tr> <td><b>m 2</b></td> <td><input name="m2" size="12"></td> </tr> <tr> <td><b>m 3</b></td> <td><input name="m3" size="12"></td> </tr> <tr> <td><b>m 4</b></td> <td><input name="m4" size="12"></td> </tr> <tr> <td><b>m 5</b></td> <td><input name="m5" size="12"></td> </tr> <tr> <td><b>m 6</b></td> <td><input name="m6" size="12"></td> </tr> <tr> <td><b>m 7</b></td> <td><input name="m7" size="12"></td> </tr> <tr> <td><b>m 8</b></td> <td><input name="m8" size="12"></td> </tr> <tr> <td><b>m 9</b></td> <td><input name="m9" size="12"></td> </tr> </tbody> </table> </form> </body> </html> |
Часовой пояс GMT +3, время: 09:53. |