Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JS: SetTimeout() не работает

10K
30 мая 2006 года
Mnilionic
33 / / 21.04.2006
есть функция js:
 
Код:
function Circle(param){
    document.write(param);
    setTimeout("Circle("+param+")",50);
}

вызвать так: Circle("43"); //работает

вызвать так: Circle("word"); // не работает

Ведь один хрен строка передаётся.

В чём ошибка?
352
30 мая 2006 года
skywalker
694 / / 10.02.2006
Цитата:
Originally posted by Mnilionic

вызвать так: Circle("43"); //работает

вызвать так: Circle("word"); // не работает


Если вызывать

 
Код:
Circle("'word'");
то все работает, а если как ты, то появляется сообщение: у word отсутствует определение.
Видимо для JS 'word' - строка, а word - все таки нет.
10K
30 мая 2006 года
Mnilionic
33 / / 21.04.2006
Цитата:
Originally posted by skywalker
Если вызывать
 
Код:
Circle("'word'");
то все работает, а если как ты, то появляется сообщение: у word отсутствует определение.
Видимо для JS 'word' - строка, а word - все таки нет.



Я думал:
Circle("word"); - строка
Circle(word); - переменная.

Оказывается нужно двойные кавычки "'строка'".

Спасибо.

10K
02 июня 2006 года
Mnilionic
33 / / 21.04.2006
Извините, а как обьект передавать через сетТаймаут?

вот так у меня не получается:
Код:
<script>

document.links[0].onmouseover = function() {Fx(this)};

function Fx(obj){
    //alert(typeof (obj));
    setTimeout("NextFx("+obj+")",1000);
}
function NextFx(obj){
    alert(typeof (obj));
}
</script>
352
02 июня 2006 года
skywalker
694 / / 10.02.2006
 
Код:
<script>

document.links[0].onmouseover = function() {Fx(this)};
</script>

Вызов функии производится так:
Fx(значение);
К тому же все функции надо определить до их использования.
10K
03 июня 2006 года
Mnilionic
33 / / 21.04.2006
[QUOTE=skywalker]
 
Код:
<script>

document.links[0].onmouseover = function() {Fx(this)};
</script>

Вызов функии производится так:
Fx(значение);
К тому же все функции надо определить до их использования.[/QUOTE]

Как вызывается функция я знаю.
Я не понимаю, почему у меня не работает скрипт, когда он проходит через setTimeout.
вот мой пример:
Код:
<script>

function Fx2(obj){
    alert(obj.className);
}

function Fx(obj){
    param = "Fx2("+ obj +")";
    setTimeout(param, 1000);
}

</script>

<a href="#" class="my_link" &#111;&#110;mouseover="Fx(this)">не работает</a>
<br>
<a href="#" class="my_link" &#111;&#110;mouseover="Fx2(this)">работает</a>


если мне обьяснят, я буду весьма рад.
Спасибо.
352
03 июня 2006 года
skywalker
694 / / 10.02.2006
Вот правильный код:
<script>

function Fx2(obj){
alert(obj.className);
}

function Fx(obj){
param = Fx2(obj);
setTimeout(param, 1000);
}

</script>

<a href="#" class="my_link" onmouseover="Fx(this)">не работает</a>
<br>
<a href="#" class="my_link" onmouseover="Fx2(this)">работает</a>

По моему ты совсем запутался в кавычках, кавычки ставятся когда передается строка, а когда передается объект то кавычки не нужны.
10K
03 июня 2006 года
Mnilionic
33 / / 21.04.2006
[QUOTE=skywalker]Вот правильный код:
<script>

function Fx2(obj){
alert(obj.className);
}

function Fx(obj){
param = Fx2(obj);
setTimeout(param, 1000);
}

</script>

<a href="#" class="my_link" onmouseover="Fx(this)">не работает</a>
<br>
<a href="#" class="my_link" onmouseover="Fx2(this)">работает</a>

По моему ты совсем запутался в кавычках, кавычки ставятся когда передается строка, а когда передается объект то кавычки не нужны.[/QUOTE]

Спасибо.

Да, в этом языке скриптов я запутался с кавычками. Но я уже почти уловил закономерности относительно двойных, одинарных и вложенния одних в другие. :)
Ошибка была в том, что в моём учебнике первый параметр функции setTimeout передавался как строка: setTimeout("MyFunc()",1000);

PS: Применил предложенный Вами вариант - всё равно происходит ошибка. И если функцию Fx2 запускать циклично, то скрипт не работает. :(
352
06 июня 2006 года
skywalker
694 / / 10.02.2006
[QUOTE=Mnilionic]Спасибо.

Да, в этом языке скриптов я запутался с кавычками. Но я уже почти уловил закономерности относительно двойных, одинарных и вложенния одних в другие. :)
Ошибка была в том, что в моём учебнике первый параметр функции setTimeout передавался как строка: setTimeout("MyFunc()",1000);

PS: Применил предложенный Вами вариант - всё равно происходит ошибка. И если функцию Fx2 запускать циклично, то скрипт не работает. :([/QUOTE]
Если не работает передача параметров в функцию с помощью setTimeout, то может тебе сделать рекурсию, т.е. поместить setTimeout в саму фунцию, что-то типа:
<script>
var param;
function funcChancgeParam (){
/*здесь что то делается с param*/
setTimeout("funcChancgeParam()",1000);
}
</script>
<a href="java script: param=/*данные*/">Изменить param

Хотя я не знаю твоего алгоритма и видел твоего кода, так что это мое предположение :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог