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 должно быть в кавычках, но как? (пробовал много вариантов)
1. kr12 - 06 Июня, 2005 - 01:26:19 - перейти к сообщению
2. ETC - 06 Июня, 2005 - 01:31:24 - перейти к сообщению
Есть одинарные, а есть двойные кавычки... в крайнем случае используй обратный слеш:
Почему не подходит? А должно, иначе никак.
CODE:
setTimeout('this.bgColor="#ccffcc"',300);
или
setTimeout("this.bgColor=\"#ccffcc\"",300)
setTimeout('this.bgColor="#ccffcc"',300);
или
setTimeout("this.bgColor=\"#ccffcc\"",300)
kr12 пишет:
setTimeout('funktionX('+N+','+N1+'',1000) - то же
Почему не подходит? А должно, иначе никак.
3. Дмитрий Б. - 06 Июня, 2005 - 03:44:56 - перейти к сообщению
Вообще, первым параметром функций setTimeout() и setInterval() является строка, которую следует запустить [запускать] на выполнение, оформленная по всем правилам JScript. Т. е., если мы хотим вызвать функцию setTimeout(), например, вот так:
- то в переменной t должно содержаться время в милисекундах, а в переменной x - строка с командой на JScript. То есть, если мы хотим, чтобы был выполнен код:
- нужно обеспечить, чтобы при выполнении команды alert(x) мы увидели именно этот текст, именно в такой орфографии. То есть, если твоя переменная N1 - строка, то и написать тебе надо так:
- где функция jstext должна принимать строку и заменять в ней, например, \ на \\ и т. д., например, так:
Функция jstext вызывается дважды, т. к. у нас тут случай "матрёшка": строка в строке.
И это всё учитывая, что в параметрах HTML-тегов кавычки, в которые заключён параметр, недопустимы даже после обратных слэшей, так что вертеться придётся с одним сортом. А если тебе надо передать массив или объект даты, или ещё покруче... Сделай эту переменную сразу глобальной, и напиши:
А вообще, с 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');
}
{
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'ом - это сплошной геморрой...