Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: setTimeout и кавычки
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1] 

> Без описания
kr12
Отправлено: 06 Июня, 2005 - 01:26:19
Post Id


Member


Покинул форум
Сообщений всего: 136
Дата рег-ции: Март 2005  

Карма 0




1. Как передать больше одного значения функции, вызываемой методом setTimeout?
setTimeout(funktionX(N,N1),1000) - не подходит.
setTimeout('funktionX('+N+','+N1+'Подмигивание',1000) - то же.
Можно конечно при первом вызове (if x==0) funktionX присвоить значения N и N1 глобальным переменным и х=1, а setTimeout('funktionX('+х+'Подмигивание',1000), как сейчас и происходит. Или свести N, N1... в одну переменную и потом её разделять. Но должен же быть способ проще?
2. onMouseOver="JavaScript:setTimeout('this.bgColor=#ccffcc',300)" Естественно #ccffcc должно быть в кавычках, но как? (пробовал много вариантов)
 
 Top
ETC Администратор
Отправлено: 06 Июня, 2005 - 01:31:24
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




Есть одинарные, а есть двойные кавычки... в крайнем случае используй обратный слеш:
CODE:

setTimeout('this.bgColor="#ccffcc"',300);
или
setTimeout("this.bgColor=\"#ccffcc\"",300)

kr12 пишет:
setTimeout('funktionX('+N+','+N1+'Подмигивание',1000) - то же

Почему не подходит? А должно, иначе никак.
 
 Top
Дмитрий Б.
Отправлено: 06 Июня, 2005 - 03:44:56
Post Id



Super Member


Покинул форум
Сообщений всего: 800
Дата рег-ции: Март 2005  
Откуда: Иркутск

Карма 0




Вообще, первым параметром функций setTimeout() и setInterval() является строка, которую следует запустить [запускать] на выполнение, оформленная по всем правилам JScript. Т. е., если мы хотим вызвать функцию setTimeout(), например, вот так:
CODE:
setTimeout(x, t);

- то в переменной t должно содержаться время в милисекундах, а в переменной x - строка с командой на JScript. То есть, если мы хотим, чтобы был выполнен код:
CODE:
funktionX(100, 'Петя', 'Крейсер \"Аврора\"');

- нужно обеспечить, чтобы при выполнении команды alert(x) мы увидели именно этот текст, именно в такой орфографии. То есть, если твоя переменная N1 - строка, то и написать тебе надо так:
CODE:
setTimeout('funktionX('+N+',\"'+jstext(jstext(N1))+'\")',1000)

- где функция jstext должна принимать строку и заменять в ней, например, \ на \\ и т. д., например, так:
CODE:
function jstext(s)
{
return s.split('\\').join('\\\\').split("'").join("\\'").split('"').join('\\"').split('\n').join('\\n').
split('\r').join('\\r').split('\t').join('\\t');
}

Функция jstext вызывается дважды, т. к. у нас тут случай "матрёшка": строка в строке.
И это всё учитывая, что в параметрах HTML-тегов кавычки, в которые заключён параметр, недопустимы даже после обратных слэшей, так что вертеться придётся с одним сортом. А если тебе надо передать массив или объект даты, или ещё покруче... Сделай эту переменную сразу глобальной, и напиши:
CODE:
setTimeout('funktionX('+N+', N1)',1000)

А вообще, с setTimeout'ом - это сплошной геморрой...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0)
« JavaScript »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0378]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33