Много таймеров на одной странице
Ребята здравствуйте
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function displayDate(vr,i)
{
vr0=vr;
i0=i;
//1340827200
c=new Date();
sec=Math.floor(c.getTime() / (1000)); //getfromtimeseconds
razn=vr0-sec;
Data=new Array();
Data[0]=Math.floor(razn / 86400); //days
Data[1]=razn-(Data[0]*86400); // remainAfterDays
Data[2]=Math.floor((Data[1] / 3600)); //hours
Data[3]=Data[1]-(Data[2]*3600); //remainAfterHours
Data[4]=Math.floor((Data[3] / 60)); //minutes
Data[5]=Data[3]-(Data[4]*60); //RemainSeconds
Data[6]=Data[0]+Data[2]+Data[4]+Data[5];
if (Data[6] > 0) {
var b=document.getElementById(id0).innerHTML=Data[0]+' Days '+Data[2]+':'+Data[4]+':'+Data[5];}
else {var b=document.getElementById(id0).innerHTML='Акция завершилась';}
window.setTimeout("displayDate(vr0,id0)",1000);
}
function init(ttime,id)
{
ttime0=ttime;
id0=id;
window.setTimeout("displayDate(ttime0,id0)",1000);
}
</script>
</head>
<body>
<h1>My First Web Page</h1>
<p id="q"><script>init(1340886000,'q')</script>dsa</p>
<p id="h" ><script>init(1340886000,'h')</script>asd</p>
<button type="button" ">Display Date</button>
</body>
</html>
написал код,работает замечательно для одного таймера,а как сделать много таймеров на одной странице?:( |
Цитата:
Цитата:
|
pimple2006,
Если установки времени не для каждого, то чисто копированием, в тот момент, когда Вы заканчиваете обновляеть первый таймер, если установки для каждого в отдельности -= нужно знать алгоритм установок ЗЫ: У меня, в Опере , по кнопке <button type="button" ">Display Date</button> ничо не меняется |
Цитата:
Твой код не рабочий. Вот я про что... |
button осталась просто так
|
ребят,все работает,во всех браузерах ,кнопка осталась от старого скрипта,если один тамймер вызвать.то работает на ура,я не знаю как вызвать их несколько штук разом,прошу помощи
|
Вот вроде тикают оба...
<!DOCTYPE html>
<html>
<head>
<script src="ttp://code.jquery.com/jquery-latest.js"></script>
<style type="text/css">
</style>
<script type='text/javascript'>
function displayDate(vr,i) {
//1340827200
c=new Date();
sec=Math.floor(c.getTime() / (1000)); //getfromtimeseconds
razn=vr-sec;
Data=new Array();
Data[0]=Math.floor(razn / 86400); //days
Data[1]=razn-(Data[0]*86400); // remainAfterDays
Data[2]=Math.floor((Data[1] / 3600)); //hours
Data[3]=Data[1]-(Data[2]*3600); //remainAfterHours
Data[4]=Math.floor((Data[3] / 60)); //minutes
Data[5]=Data[3]-(Data[4]*60); //RemainSeconds
Data[6]=Data[0]+Data[2]+Data[4]+Data[5];
if (Data[6] > 0) {
var b=document.getElementById(i).innerHTML=Data[0]+' Days '+Data[2]+':'+Data[4]+':'+Data[5];}
else {var b=document.getElementById(i).innerHTML='Акция завершилась';}
window.setTimeout(function () {
displayDate(vr,i);
},1000);
};
function start() {
init(1340886000,'q');
init(1340886000,'h');
};
function init(ttime,id) {
window.setTimeout(function () {
displayDate(ttime,id);
},1000);
};
</script>
</head>
<body>
<h1>My First Web Page</h1>
<p id="q">dsa</p>
<p id="h" >asd</p>
<button onclick='start()'>Start</button>
</body>
</html>
Код более напоминает подземный ход на чердак... :) |
а без кнопки никак?
+ данные формируются php id элемента колво секунд |
Цитата:
Функцию start(); Можно вызвать из <body onload='start();'> ... </body> |
<body> прописан на главной странице,а страница ,где есть таймеры подгружается
может данные которые формируются,попробывать занести в массив и из массива брать ? |
pimple2006, может пора таки учебник почитать? :)
http://learn.javascript.ru/hello-world#тег-script |
урок не помог в решении проблемы с кучей таймеров,но все равно спасибо))):) я частенько смотрю их
P.S я профан на самом деле в javascript, то что мог написать - сделал,сижу как дурак уже пол дня со скриптом :) заодно узнать,какие на этом форуме люди))) а то есть всякие форумы,где мой код даже не смотрели,потому что не так тему оформил |
pimple2006, Опишите четко задачу:
1. Скок таймеров ? 2. Чем они отличаются друг от друга ? 3. Как нужно выставлять их начальные значения ? Запуск - одновременный ? |
1.
сколько будет записей в базе 2.отличие в секундах,посылаемых в скрипт и id <td> 3.запуск одновременный <tr><td ></td><td id="id3"><script type="text/javascript">init(1341000000,'id3')</script></td></tr> это формирует php |
pimple2006,
1. Пытайте отвечать без кода - строго на поставленный вопрос, 2. Давать строго законченный ответ Цитата:
Применяйте поясняющее HTML с кодом различий, если нет возможности пояснить текстом |
Цитата:
2.в базе есть запись времени,допустим,30.06.2012 12-05-38,php преобразует дату в секунды,прошедшие с начала Unix эпохи,эти секунды передаются в javascript 3.Javascript берет сегодняшнюю дату(хотя тут уже неправильно,ну это не долго поправить),вычисляет разницу между конечной и сегодняшней датами,опять же в секундах,потом разбивает на дни,часы,минуты,секунды,все это выводится на экран и отсчитывается,при этом,вывод осуществляется строго по указанному id ячейки таблицы |
pimple2006,
1. Хм... Таймеры на клиенте ?(*Накой мне знать о PHP... 2.Приведите исходный код страницы для трёх таймеров(без скриптов |
<script type="text/javascript">
function displayDate(vr,i)
{
vr0=vr;
i0=i;
//1340827200
c=new Date();
sec=Math.floor(c.getTime() / (1000)); //getfromtimeseconds
razn=vr0-sec;
Data=new Array();
Data[0]=Math.floor(razn / 86400); //days
Data[1]=razn-(Data[0]*86400); // remainAfterDays
Data[2]=Math.floor((Data[1] / 3600)); //hours
Data[3]=Data[1]-(Data[2]*3600); //remainAfterHours
Data[4]=Math.floor((Data[3] / 60)); //minutes
Data[5]=Data[3]-(Data[4]*60); //RemainSeconds
Data[6]=Data[0]+Data[2]+Data[4]+Data[5];
if (Data[6] > 0) {
document.getElementById(id0).innerHTML=Data[0]+' Days '+Data[2]+':'+Data[4]+':'+Data[5];}
else {document.getElementById(id0).innerHTML='Акция завершилась';}
window.setTimeout("displayDate(vr0,id0)",1000);
}
function init(ttime,id)
{
ttime0=ttime;
id0=id;
window.setTimeout("displayDate(ttime0,id0)",1000);
}
function start() {
init(1340886000,'q');
init(1340886000,'h');
}
</script>
</head>
<body>
<h1>My First Web Page</h1>
<script>start();</script>
<p id="q">dsa</p>
<p id="h" >asd</p>
|
pimple2006,
Попробуйте сделать иначе поставить на страницу просто <div id=tim1 data="Тут время старта"></div> <div id=tim2 data="Тут время старта"></div> <div id=tim3 data="Тут время старта"></div> А единым скриптом мы уже распарсим и отразим в этих же div - блоках нужное время и его смену |
Цитата:
<h1>My First Web Page</h1> <p id="q"><script>init(time,'id');</script></p> <p id="h" ><script>init(time1,'id1');</script> Я приблизительно знаю в чем проблема http://pers.narod.ru/jscript/backtime.html вот на этом сайте написан множественный таймер я так понимаю что у меня не отображаются много таймеров,потому что переменная перезаписываетсяв новую,поэтому срабатывает только последний тайер,все остальные переменные затираются,вот не знаю как их сохранить |
pimple2006,
Не кошерно парсить PHP(om) скрипто-код а) Трудно отловить ошибки (надо ловить на двух сторонах) b) Код становицо не внятным, не передаваемым и сложно модифицируемым с) Добавка новых или исключения старых(некоторых) таймеров , заставить перерабатывать PHP в корне |
function start() {<?
if(isset($time1)){?>init(<?=$time1;?>,'q1');<?}
if(isset($time2)){?>init(<?=$time2;?>,'h2');<?}
if(isset($time3)){?>init(<?=$time3;?>,'a3');<?}
if(isset($time4)){?>init(<?=$time4;?>,'b4');<?}
?>
};
|
| Часовой пояс GMT +3, время: 03:06. |