Рестарт таймера
Всем привет. Такая вот проблема. Написал скрипт таймера, не знаю как его бесконечно запускать. При рестарте таймера, должны обновляться таблицы. Буду очень благодарен за помощь.
window.onload = function() { function f(x) { var min = 0; var max = 100; return Math.floor(Math.random() * (max - min + 1)) + min; } var tableObj1 = document.createElement('table'); var tableObj2 = document.createElement('table'); tableObj1.id = 'table1'; tableObj2.id = 'table2'; var tableHTML1 = '<tr><td>table1</td></tr>'; var tableHTML2 = '<tr><td>table2</td></tr>'; for (var i = 1; i <= 12; i++) { tableHTML1 += '<tr><td>' + f(i) + '</td></tr>'; tableHTML2 += '<tr><td>' + f(i) + '</td></tr>'; } tableObj1.innerHTML = tableHTML1; document.body.appendChild(tableObj1); tableObj2.innerHTML = tableHTML2; document.body.appendChild(tableObj2); function timer() { var minute = document.getElementById('minute').innerHTML; var second = document.getElementById('second').innerHTML; var end = false; if (second > 0) second--; else { second = 60; if (minute > 0) minute--; else { second = 60; end = true; } } switch (second) { case 40: chg(); break; case 20: chg(); break; } if (end) { clearInterval(intervalID); } else { document.getElementById('minute').innerHTML = minute; document.getElementById('second').innerHTML = second; } } window.intervalID = setInterval(timer, 1000); } function chg() { var d1 = document.getElementById("table1"); var d2 = document.getElementById("table2"); var d11 = d1.cloneNode(true); var d22 = d2.cloneNode(true); d2.parentNode.insertBefore(d11, d2); d1.parentNode.insertBefore(d22, d1); d1.parentNode.removeChild(d1); d2.parentNode.removeChild(d2); } <div id="timer"> <div id="minute">01</div> : <div id="second">30</div> </div> p.s. Извините. если не там тему создал |
обратный таймер на requestAnimationFrame
A1exy,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <script> window.addEventListener("DOMContentLoaded", function() { function f() { var min = 0; var max = 100; return Math.floor(Math.random() * (max - min + 1)) + min; } var tableObj1 = document.createElement("table"); var tableObj2 = document.createElement("table"); tableObj1.id = "table1"; tableObj2.id = "table2"; document.body.appendChild(tableObj1); document.body.appendChild(tableObj2); function content(table, title, num) { var tableHTML = "<tr><td>" + title + "</td></tr>"; for (var i = 0; i < num; i++) { tableHTML += "<tr><td>" + f() + "</td></tr>"; } table.innerHTML = tableHTML; } var minute = document.getElementById("minute"); var second = document.getElementById("second"); var time = (minute.dataset.min * 60 + +second.dataset.sec) * 1000; var timeEnd = 0; var timeCurren; function timer() { timeCurrent = timeEnd - performance.now(); if (timeCurrent <= 0) { timeCurrent = time; timeEnd = timeCurrent + performance.now(); content(tableObj1, " table1", 12); content(tableObj2, " table2", 12); } var sec = timeCurrent / 1000 | 0; var min = sec / 60 | 0; sec %= 60; minute.innerHTML = min; second.innerHTML = sec; requestAnimationFrame(timer); } timer(); }); </script> </head> <body> <div > <div id="minute" data-min="0" ></div> : <div id="second" data-sec="5" ></div> </div> </body> </html> |
рони,Спасибо большое. А как сделать так, чтобы таймер остановился на 0, и только через 10 секунд возобновился. При этом, например на 2 секунде они поменялись вот так
function chg() { var d1 = document.getElementById("table1"); var d2 = document.getElementById("table2"); var d11 = d1.cloneNode(true); var d22 = d2.cloneNode(true); d2.parentNode.insertBefore(d11, d2); d1.parentNode.insertBefore(d22, d1); d1.parentNode.removeChild(d1); d2.parentNode.removeChild(d2); } |
A1exy,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #table1{ background-color: #FFDAB9; } </style> <script> window.addEventListener("DOMContentLoaded", function() { function f() { var min = 0; var max = 100; return Math.floor(Math.random() * (max - min + 1)) + min; } var tableObj1 = document.createElement("table"); var tableObj2 = document.createElement("table"); tableObj1.id = "table1"; tableObj2.id = "table2"; document.body.appendChild(tableObj1); document.body.appendChild(tableObj2); function content(table, title, num) { var tableHTML = "<tr><td>" + title + "</td></tr>"; for (var i = 0; i < num; i++) { tableHTML += "<tr><td>" + f() + "</td></tr>"; } table.innerHTML = tableHTML; } function chg() { var d1 = document.getElementById("table1"); var d2 = document.getElementById("table2"); var d11 = d1.cloneNode(true); var d22 = d2.cloneNode(true); d2.parentNode.insertBefore(d11, d2); d1.parentNode.insertBefore(d22, d1); d1.parentNode.removeChild(d1); d2.parentNode.removeChild(d2); } var minute = document.getElementById("minute"); var second = document.getElementById("second"); var time = (minute.dataset.min * 60 + +second.dataset.sec) * 1000; var timeEnd; var timeCurrent; function setContent() { tableObj1 = document.getElementById("table1"); tableObj2 = document.getElementById("table2"); content(tableObj1, " table1", 12); content(tableObj2, " table2", 12); } function init() { timeCurrent = time; timeEnd = timeCurrent + performance.now(); setContent(); timer(); window.setTimeout(chg, 2 * 1000); } function timer() { timeCurrent = timeEnd - performance.now(); if (timeCurrent <= 0) { window.setTimeout(init, 10 * 1000); } else { requestAnimationFrame(timer); } var sec = timeCurrent / 1000 | 0; var min = sec / 60 | 0; sec %= 60; minute.innerHTML = min; second.innerHTML = sec; } init(); }); </script> </head> <body> <div > <div id="minute" data-min="0" ></div> : <div id="second" data-sec="5" ></div> </div> </body> </html> |
Часовой пояс GMT +3, время: 09:06. |