Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2009, 12:16
ViZ
 
Сообщений: n/a

Изменение кода на лету
подскажите синтаксис написания кода если имена переменных хранятся в других переменных?)
Ответить с цитированием
  #2 (permalink)  
Старый 05.02.2009, 12:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если переменные глобальные
var a = 1;
var name = 'a';
alert(window[name]);
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2009, 13:42
ViZ
 
Сообщений: n/a

спасиб)

а если например есть поле ввода id=input1

то обращатбься из кода все равно window['input1'] ? или document
(попробовал, работает с window)
Ответить с цитированием
  #4 (permalink)  
Старый 05.02.2009, 13:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

К элементу с установленным id следует обращаться через document.getElementById('id');
Ответить с цитированием
  #5 (permalink)  
Старый 05.11.2009, 15:50
Новичок на форуме
Отправить личное сообщение для djdish Посмотреть профиль Найти все сообщения от djdish
 
Регистрация: 05.11.2009
Сообщений: 3

Вопрос по сложнее
Уважаемые господа!

Столкнулся с такой задачей:

Есть таймер обратного отсчета на javascript заданный setTimeout(function(),1000);

При нажатии на кнопку обновить я прибавляю к таймеру 120 секунд, то есть останавливаю предыдущий таймер clearTimeout(timer_id) и создаю новый setTimeout(function(+120),1000)

Так вот вопрос, JS клиентский язык, то есть при нажатии на кнопку таймер изменится только у меня.

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

И более мелкий вопрос clearTimeout(id) - прикольная функция, так как словить идэшник сложно, как же можно вообще убить тимер, чтобы он из памяти улетел.

Заранее благодарен.
Ответить с цитированием
  #6 (permalink)  
Старый 05.11.2009, 15:55
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от djdish
clearTimeout(id) - прикольная функция, так как словить идэшник сложно
Что сложного?

По таймеру: рассылайте через сервер сообщения остальным клиентам. Конкретная реализация зависит от конкретной задачи.
Ответить с цитированием
  #7 (permalink)  
Старый 05.11.2009, 16:02
Новичок на форуме
Отправить личное сообщение для djdish Посмотреть профиль Найти все сообщения от djdish
 
Регистрация: 05.11.2009
Сообщений: 3

function StartCountDown()
{
	myDiv = 'timer1';
                myTargetDate = '2009/11/05 20:00:00'
                var dthen = new Date(myTargetDate);
	var dnow = new Date();
	ddiff = new Date(dthen-dnow);
	gsecs = Math.floor(ddiff.valueOf()/1000);
	CountBack(myDiv,gsecs);
}
function Calcage(secs, num1, num2)
{
	s = ((Math.floor(secs/num1))%num2).toString();
	if (s.length < 2)
	{
	s = "0" + s;
	}
return (s);
}
function CountBack(myDiv, secs)
{
	var parsediv = myDiv;
	var thistr   = 'div#' + myDiv.replace('timer','cost') + ' > h2';
	var thisin   = 'div#' + myDiv.replace('timer','bet');
	var plusrub = $(thistr).text();
	var costvalue   = plusrub.replace(' р.','');
	var DisplayStr = '';
	var DisplayFormat = "%%H%% : %%M%% : %%S%%";
	DisplayStr = DisplayFormat.replace(/%%H%%/g, Calcage(secs,3600,24));
	DisplayStr = DisplayStr.replace(/%%M%%/g, Calcage(secs,60,60));
	DisplayStr = DisplayStr.replace(/%%S%%/g, Calcage(secs,1,60));
	if(secs > 0)
	{
		document.getElementById(myDiv).innerHTML = DisplayStr;
		timeout_id = setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 1000);
		$.post('pscript/timers2session.php',{DivName : myDiv, DivTimer : timeout_id, DivCost : costvalue, Operation : 'save'});		
	}
	else
	{
		$(thisin).text('');
		document.getElementById(myDiv).innerHTML = "Лот разыгран";
	}
}
function IncrTime(DivId){
	var thisdiv  = 'div#' + DivId;
	var parsediv = thisdiv;
	var thistr   = 'div#' + DivId.replace('timer','cost') + ' > h2';
	var plusrub = $(thistr).text();
	var minus   = plusrub.replace(' р.','');
	var thisid   = 'div#' + DivId.replace('timer','lot') + ' > h1';
	var plusnid = $(thisid).text();
	var minusid   = plusnid.replace('№ ','');
	var costvalue = eval(minus) + 40 + ' р.';
	var timevalue   = $(thisdiv).text();
	var countsec = timevalue.split(':');
	var hour     = eval(countsec[0]);
	var mins     = eval(countsec[1]);
	var secs     = eval(countsec[2]);
	var newsecs  = hour*3600 + mins*60 + secs + 120;
	$(thistr).text(costvalue);
	Send_Timer();
	$.post('pscript/timers2session.php',{DivName : DivId, DivCost : minus, GoodID : minusid, Operation : 'change'},function(data){
	clearTimeout(data);
	});
	CountBack(DivId,newsecs);		
}

<div id='timer1'></div>
<div id='cost1'>100 р.</div>
<input type='button' value='Увеличить' onClick="IncrTime('timer1')";
<script language='javascript'>StartCountDown();</script>

вот собственно код таймера! иногда таймер не изменяется полностью, то есть через секунду старое значение и новое!

HELP!!!!!!
И как отправить всем клиентам некое изменение без перезагрузки страницы?
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2009, 15:16
Интересующийся
Отправить личное сообщение для dionis Посмотреть профиль Найти все сообщения от dionis
 
Регистрация: 06.11.2009
Сообщений: 13

C помощью AJAX запроса (http://habrahabr.ru/blogs/jquery/42426/) (сам я пользуюсь http://visualjquery.com/) отправляешь твою инфу на сервер, где она сохраняется в базе. У клиента по таймеру тоже летят AJAX запросы на сервер, твоя инфа считывается из базы и возвращается клиенту у которого по событию ответа от сервера и отрисовывается пришедшая инфа. Вот как-то так, даже и не знаю чего ещё добавить.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Готовность HTML кода no_alex Общие вопросы Javascript 15 25.11.2008 16:52
Подсветка кода Kolyaj Сайт Javascript.ru 6 14.10.2008 17:28
изменение переменной Ilja_ORDY Общие вопросы Javascript 3 09.09.2008 18:56
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17
Динамическое изменение размеров изображения Макс Элементы интерфейса 7 21.07.2008 16:55