Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   100-200 уникальных таймеров на одной странице. (https://javascript.ru/forum/dom-window/39427-100-200-unikalnykh-tajjmerov-na-odnojj-stranice.html)

Aeliot 29.06.2013 23:59

vadim5june, спасибо

Deff 30.06.2013 00:03

vadim5june,
Симпатично, но для полного счастья(полноценного API) - интересно возможность динамического добавления/cнятие/изъятия пунктов,
И думаю - формат отображалки - отдельной подключаемой функцией

Aeliot 30.06.2013 00:28

vadim5june,
А можно, чтобы не просто счётчик 1, 2, 3...
а чтобы время указывалось.

vadim5june 30.06.2013 00:55

Цитата:

Сообщение от Deff
Симпатично, но для полного счастья(полноценного API) - интересно возможность динамического добавления/cнятие/изъятия пунктов,
И думаю - формат отображалки - отдельной подключаемой функцией

Ну да-согласен-если есть время напиши
Цитата:

Сообщение от Aeliot
А можно, чтобы не просто счётчик 1, 2, 3...
а чтобы время указывалось.

это время в секундах-нужно написать-а легче найти 2 функции-из секунд-в дни часы минуты-и 2 я функция обратная
и вставить
тогда будет примерно так осталось 2дня 12 часов 34мин 34сек

bes 30.06.2013 01:04

Цитата:

Сообщение от Deff
для полного счастья(полноценного API) - интересно возможность динамического добавления/cнятие/изъятия пунктов,

хотя бы чтобы он останавливался, когда все задачи выполнены :)

Aeliot 30.06.2013 01:14

Если я правильно понимаю, то распарсить вариант "2дня 12 часов 34мин 34сек", чтобы получить время в секундах будет проблематично. Значит используемое время для дедлайна и отображаемое пользователю должны быть внутри разных тегов.

Только у меня ни как не получается взять время из одного тега и положить в другой.

Ни то, чтобы я не знал как это делается (сделать выборку тегов и перебрать их я умею), но что-то не выходит.

Aeliot 30.06.2013 01:23

страница имеет такой код:
<span class="timer-wrp"><span class="time_in">15</span>[<span class="time_out"></span>]</span>


Для начала, так переписал предложенный скрипт:
setInterval(function() {
	myTimer()
}, 1000)

function myTimer() {
	var els = document.querySelectorAll('.timer-wrp');
	for ( var i = 0; i < els.length; i++) {
		
		var el_in = els[i].querySelectorAll('.time_in');
		var el_out = els[i].querySelectorAll('.time_out');
		
		var t = el_in.innerHTML;

		if (t == 0)
			continue;
		t--;

		el_in.innerHTML = t;
		el_out.innerHTML = t;
	}
}


Но почему-то не находит нужных элементов.

Aeliot 30.06.2013 01:43

Как взять и положить значение разобрался
setInterval(function() {
	myTimer()
}, 1000)

function myTimer() {
	var els = document.querySelectorAll('.timer-wrp');
	for ( var i = 0; i < els.length; i++) {
		var el_in = els[i].querySelectorAll('.time_in');
		var el_out = els[i].querySelectorAll('.time_out');
		
		var t = el_in[0].innerHTML;

		if (t == 0)
			continue;
		t--;

		el_in[0].innerHTML = t;
		el_out[0].innerHTML = t;
	}
}


копаюсь дальше

vadim5june 30.06.2013 02:28

вот здесь нашел функцию преобразования
http://snippets.artvolk.sumy.ua/view...-na-javascript
с ней так получается
<!DOCTYPE HTML>
<html>
<table border=1 width=100%>
<tr><td>пожарить блины</td><td 

class='time'>125</td></tr>
<tr><td>заварить чай</td><td 

class='time'>81</td></tr></table>
<script>
setInterval(function(){var els=document.querySelectorAll('.time');
for(var i=0;i<els.length;i++)
{if(!els[i].t)els[i].t=els[i].innerHTML;var t=els[i].t;if(t==0)continue;t--;els[i].innerHTML=toFormattedTime(t,1,1);els[i].t=t;if(t==0){alert(els[i].parentNode.querySelector('td').innerHTML);els[i].parentNode.style.background='red';}}
},1000);
//-------
function toFormattedTime(input, withHours, roundSeconds)
{if (input<=0)return '00:00:00';
    if (roundSeconds)
    {
        input = Math.ceil(input);
    }

    var hoursString = '00';
    var minutesString = '00';
    var secondsString = '00';
    var hours = 0;
    var minutes = 0;
    var seconds = 0;

    hours = Math.floor(input / (60 * 60));
    input = input % (60 * 60);

    minutes = Math.floor(input / 60);
    input = input % 60;

    seconds = input;

    hoursString = (hours >= 10) ? hours.toString() 

: '0' + hours.toString();
    minutesString = (minutes >= 10) ? 

minutes.toString() : '0' + minutes.toString();
    secondsString = (seconds >= 10) ? 

seconds.toString() : '0' + seconds.toString();

    return ((withHours) ? hoursString + ':' : '') 

+ minutesString + ':' + secondsString;
}

</script>

рони 30.06.2013 02:44

Aeliot,
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<span class="timer-wrp"><span class="time_in">15</span>[<span class="time_out"></span>]</span>
 <script>
  setInterval(function() {
	myTimer()
}, 1000)
function myTimer() {
	var els = document.querySelectorAll('.timer-wrp');
	for ( var i = 0; i < els.length; i++) {
		var el_in = els[i].querySelector('.time_in');
		var el_out = els[i].querySelector('.time_out');
		var t = el_out.innerHTML||+el_in.innerHTML+1;
        if (t == 0)continue;
        t--;
        el_out.innerHTML = t;
	}
}
</script>
</body>
</html>


Часовой пояс GMT +3, время: 14:07.