Super Member
Покинул форум
Сообщений всего: 800
Дата рег-ции: Март 2005
Откуда: Иркутск
Карма 0
|
Вообще, первым параметром функций setTimeout() и setInterval() является строка, которую следует запустить [запускать] на выполнение, оформленная по всем правилам JScript. Т. е., если мы хотим вызвать функцию setTimeout(), например, вот так:
- то в переменной 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'ом - это сплошной геморрой... |