Задать вопрос
@kostarus61

Как использовать JS скрипт таймера ко всему циклу WHILE?

Здравствуйте уважаемые!

Помогите пожалуйста решить следующую проблему.

Есть цикл который выводит из БД из определенной таблицы все строки:

$q=mysql_query("SELECT * FROM `users_plan` WHERE `id_user` = '$usid'  ORDER BY `id` DESC");
echo "<table>";
while($post=mysql_fetch_array($q)){
	echo "<tr><td>".$post[id]."</td><td>".$post[name]."</td><td><span class='text_gr' id='time_str'>".time_left2($post['time']-$time)."</span></td><td>.....</td></tr>";
}
echo "</table>";


Следующий код из цикла выводит таймер
<td><span class='text_gr' id='time_str'>".time_left2($post['time']-$time)."</span></td>


Так вот это таймер работает только для первой строки которая выводится циклом, на всех остальных строках он стоит на месте.

Как сделать что бы таймер работал во всех строках которые выводятся из БД.

Вот скрипт самого таймера:
<script type="text/javascript">
	var stopTimer = 0;
	function countDown() {
		if(!stopTimer) {
			var work_number_string = document.getElementById('time_str').innerHTML;
			var work_number_all = work_number_string.split(" ");
			var work_number_days = work_number_all[2];
			var work_number_hours = work_number_all[4];
			var work_number_min = work_number_all[6];
			var work_number_sec = work_number_all[8];
			var work_number = +work_number_sec + 60*work_number_min + 3600*work_number_hours + 86400*work_number_days;
			work_number = work_number-1;
	
				days = Math.floor(work_number / 86400);
				work_number -= days * 86400;
				hours = Math.floor(work_number / 3600);
				work_number -= hours * 3600;
				minutes = Math.floor(work_number / 60);
				work_number -= minutes * 60;
				seconds = Math.floor(work_number % 60);
				days = (days < 10) ? days : days;
				hours = (hours < 10) ? hours : hours;
				minutes = (minutes < 10) ? minutes : minutes;
				seconds = (seconds < 10) ? seconds : seconds;
				document.getElementById('time_str').innerHTML =  "Осталось времени "+days+" д. "+hours+" ч. "+minutes+" мин. "+seconds+" сек.";
			
		}
	}
	</script>
  • Вопрос задан
  • 2459 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Roquie
@Roquie
Замените id на class. Все идентификаторы в html должны быть уникальны. И им отдается приоритет при работе с JS. Если логику JS надо применить к несколькм элементам используются классы.

<td><span class='text_gr time_str''>".time_left2($post['time']-$time)."</span></td>


//...
var work_number_string = document.getElementByClass('time_str').innerHTML;
//...


//...
document.getElementByClass('time_str').innerHTML =  "Осталось времени "+days+" д. "+hours+" ч. "+minutes+" мин. "+seconds+" сек.";
//...
Ответ написан
@kostarus61 Автор вопроса
Кто знает как сделать данный скрипт с уникальными id?

Если сделать вот так:
$i=1;
while($post=mysql_fetch_array($q)){

	echo "<tr><td>".$post[id]."</td><td>".$post[name]."</td><td><span class='text_gr' id='time_str".$i."'>".time_left2($post['time']-$time)."</span></td><td>.....</td></tr>";
$i++;
}


То к id - time_str будет прибавляться по +1, таким образом он будет уникальным.
Как такой же цикл сделать в JS?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы