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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скрипт часов не пашет в фрейме... извините за туповатую формулировку! 
:(
    Опции темы
krulik
Дата 27.2.2006, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

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



Понадобились мне простенькие часики на страничке! Написать написал. Вот скрипт:
Код

function fulltime()
{
    var Digital=new Date()
    var hours=Digital.getHours()
    var minutes=Digital.getMinutes()
    var seconds=Digital.getSeconds()
    var dn="AM"
    if (hours>12)
    {
        dn="PM"
        hours=hours-12
    }
    if (hours==0)  hours=12
    if (minutes<=9)    minutes="0"+minutes
    if (seconds<=9)    seconds="0"+seconds
    myclock=hours+":"+minutes+":"+seconds+" "+dn;
    parent.full.value=myclock.toLocaleString();
    setTimeout(" fulltime()",100)
}

Вызывается вот так из левого фрема (lframe.html)
Код

<tr><td><center><input type=text SIZE="20" name=full class='time'><script>fulltime();</script></center></td></tr>


Теперь когда я открываю главную страницу то вижу пустое текстовое поле. И никаких часов!
Если в строке написать полный путь к странице с левым фреймом то часы тикают!

Почему так. Може нужно функции явно передать место где нужно этот скрипт выполнять. Ктонибудь объясните чайнику в чем дело. И как с этим бороться!?
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
12345c
Дата 27.2.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



Причина в этой строке: setTimeout(" fulltime()",100) . Она вызывает функцию в главном окне, а там скрипта нет. Будет работать setTimeout(frames.имя_фрейма.fulltime,100) (скобки с кавычками не обязательны).
PM WWW   Вверх
krulik
Дата 27.2.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

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



Вот индексная страница:
Код

<HTML>
<FRAMESET COLS="20%,80%" frameborder=0>
<FRAME SRC="lframe.html" name="leftfram" noresize marginwidth=6 marginheight=5>
<FRAME SRC="rframe.html" name="rightfram">
</FRAMESET>
</HTML>


В функции написал как сказал:
Код

setTimeout(frames.leftfram.fulltime,100)

Но все по старому!
Имеет ли значение где расположена сама функция? Изначально она была в отдельном файле (там все JS скрипты хранятся). Но сейчас попробовал ее перенести в текст самого фрейма но ничего не изменилось!
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
12345c
Дата 27.2.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



Тут есть ещё фреймозависимая строка, сразу не заметил: parent.full.value=myclock.toLocaleString();
Надо переписать в top.frames.leftfram.full.value=myclock.toLocaleString(); (или лучше попробуйте full.value=myclock.toLocaleString(); - не представляю точно, где вызовется скрипт)
А setTimeout работать так будет (или top.frames...), но попробуйте переписать по-старому, чтобы меньше зависимостей от фреймов было.

Это сообщение отредактировал(а) 12345c - 27.2.2006, 13:57
PM WWW   Вверх
krulik
Дата 27.2.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 132
Регистрация: 14.1.2006
Где: Украина, Житомир

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



12345c, спасибо за ответы! Родина тебя не забудет!
Не один из вариантов не пошел! Решил поэксперементировать. И вот что получилось.
Код

...
full.value=myclock.toLocaleString();
setTimeout(fulltime,100)
...

остальное все осталось прежним

Это сообщение отредактировал(а) krulik - 27.2.2006, 14:13
--------------------
Каждый день несет в себе частицу вечности (Паоло Коэльо)Если вам плюют в спину, значит вы в переди! (Конфуций)Все, что имеет форму, может исчезнуть в одно мгновение (Харуки Мураками)
PM MAIL ICQ   Вверх
12345c
Дата 27.2.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


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

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



Ну да, "попробуйте full.value=myclock.toLocaleString(); " - писал такой, но самому создавать и проверять ведь лень, сам понимаешь.
Цитата(krulik @ 27.2.2006, 14:12 Найти цитируемый пост)
setTimeout(fulltime,100)
Значит, он вызывается не в главном окне, а в фрейме.

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


 




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


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

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