Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт отсчёта времени работает не корректно, Ошибка Error: Object expected 
:(
    Опции темы
vintyara
Дата 7.10.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: нет
Всего: 2



Помогите ! Вот есть скриптец:

Код

<script type="text/javascript">
function a(){
alert('test');
top.setTimeout("a()",3000);
}
a();
</script>


При его запуске происходит следующее - при загрузке странички сразу выскакивает Алерт, потом, через 3000 мс IE показывает ошибку
Line:1
Char:1
Error: Object expected
Code:0

В Мозилле Файерфоксе всё то же самое, ошибка 

Ошибка: a is not defined
Источник: http://192.168.0.3/chat2/chat.php
Строка: 5

Пробовал из строки top.setTimeout("a()",3000); зделать top.setTimeout(a(),3000); - тогда Алерт сыпется постоянно, без задержек.
Но по карйне мере браузер ошибку не показывал smile Вобщем запутался я в 3х строчках smile Почему так ?
PM MAIL ICQ   Вверх
GIK
Дата 7.10.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

Репутация: 6
Всего: 14



Цитата

Пробовал из строки top.setTimeout("a()",3000); зделать top.setTimeout(a(),3000); - тогда Алерт сыпется постоянно, без задержек.

Потому-что компилятор видет одну сроку "a(),3000" второй аргумент = 0 

У меня вроде все работает, когда так: (IE version>4) 
Код

<html>
<head>
<script type="text/javascript">
function a(){
alert('test');
top.setTimeout("a()",3000);
}
a();
</script>
<body>
</body>
</html>



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Zeroglif
Дата 7.10.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 644
Регистрация: 22.9.2005

Репутация: 28
Всего: 66



Цитата(vintyara @  7.10.2006,  11:01 Найти цитируемый пост)
Пробовал из строки top.setTimeout("a()",3000); зделать top.setTimeout(a(),3000); - тогда Алерт сыпется постоянно, без задержек.


Первым аргументом или код (string), или ссылка на функцию:

http://msdn.microsoft.com/library/default..../settimeout.asp
http://developer.mozilla.org/en/docs/DOM:window.setTimeout

Я твою страницу открыть не могу, но предположу, что там фреймы, и top.setTimeout не может найти функцию a, которая живёт не в top-е.

PM MAIL WWW   Вверх
Sardar
Дата 7.10.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(GIK @  7.10.2006,  11:26 Найти цитируемый пост)
Потому-что компилятор видет одну сроку "a(),3000" второй аргумент = 0 

GIK, никогда больше так не говори.

vintyara, переодический таймер удобней и эффективней делать  через setInterval()
По сабжу Zeroglif прав, что бы заработало нужно одать ссылку на функцию. 

Цитата(vintyara @  7.10.2006,  10:01 Найти цитируемый пост)
Пробовал из строки top.setTimeout("a()",3000); зделать top.setTimeout(a(),3000);

Угу, бесконечная рекурсия. Что бы отдать просто функцию убери (). Да и помни что функция == обычная переменная, а () это оператор вызвова функции из переменной.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
12345c
Дата 7.10.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



vintyara, в простомокне твой скрипт работает, но у тебя, скорее всего, он в фрейме, поэтому ошибка. Пиши top.setTimeout("имя_окна_фрейма.a()",3000);
PM WWW   Вверх
vintyara
Дата 9.10.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: нет
Всего: 2



Увы, запутался в конец я.
Фреймы у меня такие:

Код

<frameset cols="80%,*"rows="80%,*">
<frame NORESIZE FRAMEBORDER=1 name="chat"            src="chat.php">
<frame NORESIZE FRAMEBORDER=1 name="online"          src="u_online.php">
<frame NORESIZE FRAMEBORDER=1 name="type_text"    src="c.htm">
<frame NORESIZE FRAMEBORDER=1 name="smiles"          src="d.htm">
<frame NORESIZE FRAMEBORDER=1 name="engine"         src="engine.php">
</frameset>


Файлег chat.php пока что содержит в себе вот что:

Код

<html>
<script type="text/javascript">
function timer() {
  setTimeout("parent.online.document.alert('Врем\я истекло!')", 3000);
}
timer();
</script>
<body>
....


и не работает !!! Пишет ошибки :

Ошибка: parent.online.document.alert is not a function
Источник: http://192.168.0.3/chat2/chat.php
Строка: 6

Прошу сильно ногами не пинать, но не понимаю я почему так smile ...
PM MAIL ICQ   Вверх
Sardar
Дата 9.10.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



document не имеет метода alert, он принадлежит window. Об этом тебе браузер вполне ясно обьяснил...
parent.online.alert, но учти что визуально окошко ничем отличаться не будет smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
vintyara
Дата 10.10.2006, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 24.3.2005
Где: Ode$$a

Репутация: нет
Всего: 2



Sardar, 
мне визуально и не надо чтобы отличалось =) я просто хочу на таком элементарном примере понять "что к чему"  smile 
PM MAIL ICQ   Вверх
Sardar
Дата 11.10.2006, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Все методы и переменные окна (твои функции это "методы" global, в брауере window) можно достать имея на руках собственно обьект - окно. Через window.frames.name можно обратиться ко фрейму в окне, сам фрейм это тоже window естественно (.contentWindow, как угодно).

top обращаеться к самому верхнему фрейму, parent к родительскому фрейму (их вообще в дерево можно собрать), opener к окну/фрейму что открыл это окно, ну а по ссылке полученной от window.open обращаемся к дочернему окну. Это всё обьекты window, имеющие коллекцию frames. 

top.frames.name - обращение к name фрейму в самом внешнем фрейме (окно браузера). Значит top.frames.name.my_func(); обратиться к my_func определённой в документе подгруженном в top.frames.name (фрейм name в главном браузерном окне). Что ещё не ясно?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0871 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.