Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.12.2018, 21:49
Интересующийся
Отправить личное сообщение для bridun Посмотреть профиль Найти все сообщения от bridun
 
Регистрация: 03.12.2018
Сообщений: 17

Помогите добить таймер обратного отсчета.
Привет всем помогите добить скрипт

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>


<?php

	date_default_timezone_set('Europe/Kiev');//timzone
/**
1|text|link|12|10|2018|10:00:00|09:55:00|10:30:00|  
2|text|link|12|10|2018|21:00:00|20:55:00|21:30:00|  
3|text|link|12|10|2018|22:00:00|21:55:00|22:30:00| 
*/
    $data =  file("time_table.dat");
	
	foreach($data as $rows) {

		$elem = explode("|", $rows);
		if (!strripos($rows, "|")) continue;

///////////////////////////////////////////////////////////////

?>

<script type="text/javascript">

var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[7];?>").getTime();//до открытия ссылки 
//var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[8];?>").getTime();// до закрытия ссылки 
var x = setInterval(function() {

    var now = new Date().getTime();

    var distance = countDownDate - now;

    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);


    document.getElementById("demo_<?=$elem[0];?>").innerHTML = days + ":" +  hours + ":" + minutes + ":" + seconds + "<br> <a href=\"#\">Неактивная</a>"; 

    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo_<?=$elem[0];?>").innerHTML = "<a href=\"<?=$elem[2];?>\">Активная</a>";
		//window.location = "final.php" // по окончанию времени перейти на другу страницу
    }
}, 1000);

/**время беру из переменной через фореч из файла , работает только по последней строке,
 тоесть выводит лиш один результат,  помогите чтоб показать несколько таймеров обратного отсчета и прикрутить таймер до закрытия ссылки и */

</script>

<?		 

		 
echo'<table border="1" align="center" cellpadding="0" cellspacing="0" width="300">

	<tr>
		<td valign="top" align="center"  width="150">
        '.$elem[3].'/'.$elem[4].'/'.$elem[5].'-'.$elem[6].'<br>
		'.$elem[1].'
		</td>
		<td valign="top" align="center"  width="150">
		<span id="demo_'.$elem[0].'"></span>
		</td>
	</tr>
</table>';
	}

?>

Последний раз редактировалось bridun, 10.12.2018 в 21:55.
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2018, 10:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от bridun
var x = setInterval
Не может одна переменная ссылаться на несколько таймеров как и var countDownDate не будут несколькими независимыми переменными. И уже ведь говорилось - не выставляйте php, код в нем никто не станет разбираться.
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2018, 10:37
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,708

16-17 строки можно местами поменять, чтобы бесполезное действие не выполнять, если строка пустая (можно вообще от stripos избавиться работая с результатом функции explode).
Вместо десятков строк js-кода лучше оставить в массиве данных те, что понадобятся клиенту и поместить их на страницу, как json и на клиенте работать уже с этими данными (сократите js-код в {count($data)} раз).

Еще можете почитать про, к примеру, mvc и шаблонизаторы.
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2018, 16:44
Интересующийся
Отправить личное сообщение для bridun Посмотреть профиль Найти все сообщения от bridun
 
Регистрация: 03.12.2018
Сообщений: 17

Nexus, я учусь и для себя делаю
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2018, 16:46
Интересующийся
Отправить личное сообщение для bridun Посмотреть профиль Найти все сообщения от bridun
 
Регистрация: 03.12.2018
Сообщений: 17

Переделал получилось открывать ссылку а вот типер по окончанию времени нужно опять спрятать

<html>
<head>
<title> Таймер обратного отсчета </title>

</head>
<body >

<?php
//error_reporting (0);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
	//date_default_timezone_set('Europe/Kiev');//timzone
	
/**  time_table.dat
1|text|link|12|10|2018|10:00:00|09:55:00|10:30:00|  
2|text|link|12|10|2018|21:00:00|20:55:00|21:30:00|  
3|text|link|12|10|2018|22:00:00|21:55:00|22:30:00| 
*/
	date_default_timezone_set('Europe/Kiev');//timzone


    $data =  file("time_table.dat");

	foreach($data as $rows) {

		$elem = explode("|", $rows);
		if (!strripos($rows, "|")) continue;
		 
echo'<table border="1" align="center" cellpadding="0" cellspacing="0" width="300">

	<tr>
		<td valign="top" align="center"  width="150">
        '.$elem[3].'/'.$elem[4].'/'.$elem[5].'-'.$elem[6].'<br>
		'.$elem[1].'
		</td>
		<td valign="top" align="center"  width="150">
<script type="text/javascript">

/////////////////////////
timedown("'.$elem[3].','.$elem[4].','.$elem[5].','.$elem[7].'","link_'.$elem[0].'");
//var countDownDate = new Date("<?=$elem[3].','.$elem[4].','.$elem[5].','.$elem[8];?>").getTime();// до закрытия ссылки 
function timedown(ti,id){

var countDownDate = new Date(ti).getTime();

var x = setInterval(function() {

    var now = new Date().getTime();
    
    var distance = countDownDate - now;
    
    var days = Math.floor(distance / (1000 * 60 * 60 * 24));
    var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var seconds = Math.floor((distance % (1000 * 60)) / 1000);
    
document.getElementById(id).innerHTML = "до входа<br>"+(days!=0 ? days + ":" : "") + (hours!= 0 ? hours + ":" : "") + (minutes != 0 ? minutes + ":" : "") + seconds + "<br><a href=\"#\">Неактивная</a>";

    if (distance < 0) {
        clearInterval(x);
        document.getElementById("link_'.$elem[0].'").innerHTML = "<a href=\"'.$elem[2].'\">Активная</a>";
		//window.location = "final.php" // по окончанию времени перейти на другу страницу

    }
}, 1000);
}

/**  помогите прикрутить таймер до закрытия ссылки и спрятать ссылку обратно*/

</script>		
		
<span id="link_'.$elem[0].'"></span>

		
		</td>
	</tr>
</table>';
	}

?>


</body>
</html>
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2018, 17:00
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,708

Сообщение от bridun
Nexus, я учусь и для себя делаю
Учитесь не, простите, говно писать, а нормальные, поддерживаемые вещи.
Толку больше будет, будете сразу знать как сделать лучше, а не как "быстрее".
Быстрота в конечном итоге приведет к тому, что код однажды придется переписать полностью, поскольку поддерживать эту хрень даже вам через год будет в тягость.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таймер обратного отсчета. Davias Events/DOM/Window 10 31.05.2017 03:01
Индивидуальный таймер обратного отсчета времени с редиректом pozitiv4ek Работа 2 11.12.2016 13:42
Таймер обратного отсчета Kity Элементы интерфейса 1 30.07.2016 11:56
Таймер обратного отсчета UNIX time TuxShot Общие вопросы Javascript 6 03.08.2014 13:36
таймер обратного отсчёта , помогите дописать ДимаЯл Элементы интерфейса 5 08.01.2011 10:20