Перезапуск одного таймера из нескольких
Всем здравствуйте.
Прошу помощи у компетентных. На странице - несколько таймеров, отсчитывающих 20 секунд. Работают. Под каждым таймером кнопка, нажав по которой, он должен перезапускаться. Но, перезапускаются все. Видимо нужно как-то привязать к конкретному id. Как это реализовать я понять не могу... Скрипт таймера:
function countdownTime(elem)
{
span_id = document.getElementById(elem);
bet_time = new Date;
bet_time = bet_time.getTime() + 20000;
function calculate(elem)
{
now_time = new Date;
now_time = now_time.getTime();
seconds = Math.ceil((bet_time - now_time) / 1000 * 1);
if (seconds > 0)
{
residue = seconds < 10 ? "0" + seconds : seconds;
elem.innerHTML = "00:00:" + residue;
setTimeout(function()
{
calculate(elem);
}
, 1000);
}
else
{
elem.innerHTML = "Поехали";
}
}
calculate(span_id);
}
Скрипт функции перезапуска:
function clickTimerButton(elem) {
//$('#' + elem).html('');
//clearInterval(timer);
return countdownTime(elem);
}
Html:
<span id=''>
</span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button
onClick='clickTimerButton('span_id');'>
</button>
Может есть, кто реализовывал подобное? |
Drugpunker,
:-?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.time, input {
background: rgba(102, 255, 51, 1);
width: 80px;
height: 30px;
display: block;
text-align: center;
}
</style>
<script>
function countdownTime(elem) {
var bet_time = new Date;
bet_time = bet_time.getTime() + 20000;
window.clearTimeout(elem.timer)
function calculate(elem) {
var now_time = new Date;
now_time = now_time.getTime();
var seconds = Math.ceil((bet_time - now_time) / 1000 * 1);
if (seconds > 0) {
residue = seconds < 10 ? "0" + seconds : seconds;
elem.innerHTML = "00:00:" + residue;
elem.timer = setTimeout(function () {
calculate(elem);
}, 1000);
} else {
elem.innerHTML = "Поехали";
}
}
calculate(elem);
}
function clickTimerButton(elem) {
return countdownTime(elem);
}
window.onload = function () {
var span = document.querySelectorAll('.time');
for (var i = 0; i < span.length; i++) {
var el = span[i];
var button = document.createElement('input');
button.onclick = (function (span) {
return function () {
clickTimerButton(span)
}
})(el);
button.type = 'button';
button.value = 'Жмак!'
el.parentNode.insertBefore(button, el.nextSibling);
button.click()
}
}
</script>
</head>
<body>
<span class='time'></span>
<span class='time'></span>
<span class='time'></span>
<span class='time'></span>
</body>
</html>
|
Вроде как то, но не то, или я не понимаю.
Вот так таймеры выглядят у меня:
<span id='span_id'>
</span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button
onClick='clickTimerButton('span_id');'>
</button>
<span id='span_id'>
</span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button
onClick='clickTimerButton('span_id');'>
</button>
<span id='span_id'>
</span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button
onClick='clickTimerButton('span_id');'>
</button>
Получается мне нужно добавить класс time ко всем спанам. Убрать onClick из кнопок. и нечего не работает...:cray: И таймеры (вначале) должны запускаться сами, без нажатия на кнопку |
Цитата:
|
Вроде как понял, но в моём то случае
<span id='span_id' class='time'>
</span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button>Жмак!</button>
получается, вот эта строчка не нужна? Код:
el.parentNode.insertBefore(button, el.nextSibling);Так как вставлять средствами JS <button></button>не нужно, пытаюсь использовать приведённый, рони код в моей реализации. Толку ноль... В итоге всё имеет такой вид: HTML:
<span id='span_id' class='time'></span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button id='button'>Жмак!</button>
<span id='span_id' class='time'></span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button id='button'>Жмак!</button>
<span id='span_id' class='time'></span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button id='button'>Жмак!</button>
<span id='span_id' class='time'></span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button id='button'>Жмак!</button>
<span id='span_id' class='time'></span>
<script language='javascript'>
countdownTime('span_id')
</script>
<button id='button'>Жмак!</button>
JS:
function countdownTime(elem)
{
var bet_time = new Date;
bet_time = bet_time.getTime() + 20000;
window.clearTimeout(elem.timer);
function calculate(elem)
{
var now_time = new Date;
now_time = now_time.getTime();
var seconds = Math.ceil((bet_time - now_time) / 1000 * 1);
if (seconds > 0)
{
residue = seconds < 10 ? "0" + seconds : seconds;
elem.innerHTML = "00:00:" + residue;
elem.timer = setTimeout(function()
{
calculate(elem);
}
, 1000);
}
else
{
elem.innerHTML = "Поехали!";
}
}
calculate(elem);
}
/*Timer Button*/
function clickTimerButton(elem) {
return countdownTime(elem);
}
window.onload = function() {
var span = document.querySelectorAll('.time');
for (var i = 0; i < span.length; i++)
{
var el = span[i];
var button = document.getElementById('button');
button.onclick = (function(span)
{
return function()
{
clickTimerButton(span);
};
})(el);
el.parentNode.insertBefore(button, el.nextSibling);
button.click();
}
};
Видимо мне нужно ловить кнопку, например по id, но чего то не получается:-/ Уже как только ни пробовал решение переделать, аж стыдно, блин... |
Drugpunker,
почему у вас одинаковые id -- id уникально неповторимо http://learn.javascript.ru/ |
Это то оно таки да.
Цель поймать элемент, в частности <button>, в данной реализации, во время пересчёта <span> с классом time. Вот я и говорю как, поймать то? |
Drugpunker,
:blink: |
Цитата:
|
Может всё-таки при onClick по кнопке передавать уникальное имя каждой кнопки?
|
| Часовой пояс GMT +3, время: 08:57. |