Много таймеров на одной странице
Ребята здравствуйте
<!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, время: 16:54. |