Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать так, чтобы функция JS в одном фрейме изменяла свойства объектов в другом?!
 
 автор: Полина   (15.05.2007 в 13:24)   письмо автору
 
 

Как сделать так чтобы в окне, состоящем из двух фреймов (фрейм1 и фрейм2) при нажатии в фрейм2 на ссылкуA в фрейм1 изменялся размер шрифта ссылкиB.

Я пробывала в событие onClick для ссылкиА в фрейме2 прописать:

parent.frames[0].links[1].style.fonySize="18pt"

безуспешно.

   
 
 автор: ilyaILF   (15.05.2007 в 13:49)   письмо автору
 
   для: Полина   (15.05.2007 в 13:24)
 

Попробуйте parent.document....:
http://www.w3schools.com/htmldom/prop_frame_name.asp
bronenos совершенно прав, коллекция фреймов принадлежит объекту window http://www.w3schools.com/htmldom/dom_obj_window.asp

   
 
 автор: Полина   (15.05.2007 в 14:11)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 13:49)
 

Вот вы знаете я совсем не понимаю конструкцию getElementBiuld и мне кажется может можно сделать как нибудь по другому?

   
 
 автор: ilyaILF   (15.05.2007 в 14:14)   письмо автору
 
   для: Полина   (15.05.2007 в 14:11)
 

Чего может быть проще - getElementById - взять элемент с идентификатором id . Всего-навсего надо обозвать (присвоить значение атрибуту id ) элемент и "взять" его при помощи getElementById и делать с ним все, что захочется. :-)

   
 
 автор: Полина   (15.05.2007 в 14:18)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 14:14)
 

Ну я так где то я и думала. Только этого ни в одном учебнике нет. А мне надо чтобы код был обоснован, объяснен, с выкладками из учебников и определениями, а если я напишу, что это вы так рассказывали мне конечно поверят, но по голове не погладят.)

Вот когда буду работать обязательно учту все ваши замечания (они мне очень нравятся! серьезно)
А пока мне надо все по полочкам расскладывать.

   
 
 автор: bronenos   (15.05.2007 в 13:50)   письмо автору
 
   для: Полина   (15.05.2007 в 13:24)
 

во-первых, fontSize, во-вторых.... frames лежит в объекте window, если мне память не изменяет

   
 
 автор: Полина   (15.05.2007 в 14:02)   письмо автору
 
   для: bronenos   (15.05.2007 в 13:50)
 

В программе без ошибок.
Да нет, так тоже можно. Синонимы.
Дело в том, что пишет, что parent.frames[0].links no has properties. Т.е как я понимаю не имеет свойств.
т.е. например document.link имеет, а эта конструкция нет?

   
 
 автор: ilyaILF   (15.05.2007 в 14:04)   письмо автору
 
   для: Полина   (15.05.2007 в 14:02)
 

Конструкция
parent.frames[0]....
изначально неправильна, нужно
window.frames[0].....

   
 
 автор: bronenos   (15.05.2007 в 14:05)   письмо автору
 
   для: Полина   (15.05.2007 в 14:02)
 

попробуйте window.frames[0]

   
 
 автор: Полина   (15.05.2007 в 14:08)   письмо автору
 
   для: bronenos   (15.05.2007 в 14:05)
 

категоричный ответ window.frames[0] no has properties.
Что делать?

   
 
 автор: ilyaILF   (15.05.2007 в 14:09)   письмо автору
 
   для: Полина   (15.05.2007 в 14:08)
 

Где располагаете код JavaScript? Нужна часть вашего кода для детального рассмотрения.

   
 
 автор: Полина   (15.05.2007 в 14:13)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 14:09)
 

Код располагается в фрейме 2, т.е. получается как frames[1]

<html>
<head>
<script language="JavaScript">
function PF()
{ window.frames[0].links[1].style.fontSize="18pt";}
</script>
</head>
<frame target="bottom">
<table width="200" cellspacing="2">
<tr><td HEIGHT="50" bgcolor='#87CEEB'><A href="Myself.htm" onClick="PF()">О себе</A></td></tr>
</table>
</html>

   
 
 автор: Полина   (15.05.2007 в 14:21)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 14:09)
 

А вот это первый фрейм, тот, где должны изменяться ссылки. В нем находится еще одна функция. Я вот думаю она не мешает той, с которой проблемы?
<html><head>
<title></title>
<SCRIPT language="JavaScript">
function f(link)
{
link.style.fontSize="18pt";
if(f.link) f.link.style.fontSize="11pt";
f.link = link;
}
</SCRIPT>
<table width="100%" CELLSPACING="2">

<tr>
<td align="center" height="30" bgcolor = "87CEEB" title="Главная"><a href="Main.htm" target="bottom" onclick="f(this)">Главная </a></a></td>
<td align="center" height="30" bgcolor = "87CEEB" title="О себе"> <a href="Myself.htm" target="bottom" onclick="f(this)">О себе </a></td></tr>
</table>
</html>

   
 
 автор: ilyaILF   (15.05.2007 в 14:31)   письмо автору
 
   для: Полина   (15.05.2007 в 14:21)
 

Если я не ошибаюсь, то работа с фреймовой структурой осуществляется следующим образом, сначала создается фреймовая разметка (это отдельный файл - например myframes.htm):
<html>
<frameset cols = "50%, 50%">
  <frame src ="index1.htm" />
  <frame src ="index2.htm" /> 
</frameset>
</html>
далее создаются эти HTML страницы - index1.htm и index2.htm. И вот как раз в этих, созданных страницах, и происходит обработка скриптов JavaScript.
P.S. Из учебника (:-) ) - Содержимое же фрейма - это отдельная HTML страница, которая может находиться где угодно: в другом каталоге, на локальном сервере или на удаленном сервере где-то в сети.

   
 
 автор: Полина   (15.05.2007 в 14:36)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 14:31)
 

Ага. Родительская страничка имеет код:

<html><head><title></title>
<frameset rows="15%,*" border=0>
<frame src="Menu.html" name="top" scrolling="no">
<frame src="Main.htm" name="bottom">
</frameset>
</html>

Помогите пожалуста!!!
Конечно логично что не работает, но почему???

   
 
 автор: Полина   (15.05.2007 в 14:42)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 14:31)
 

Ага, только у меня такого учебника нет.
А что такое содержимое фрейма я знаю. Честное слово! А как реализовать свою Мегазадумку нет.(

   
 
 автор: CNT   (15.05.2007 в 14:48)   письмо автору
 
   для: Полина   (15.05.2007 в 13:24)
 

parent.frames [0].document.links [1].style.fontSize = "18pt";

   
 
 автор: Полина   (15.05.2007 в 14:56)   письмо автору
 
   для: CNT   (15.05.2007 в 14:48)
 

Не-а. Был такой вариант. Но с треском провалился.

   
 
 автор: ilyaILF   (15.05.2007 в 15:07)   письмо автору
 
   для: Полина   (15.05.2007 в 14:56)
 

Не мог такой вариант, предложенный CNT, провалиться, потому как он правильный:
Ваша фреймовая структура - файл index.html:
<html><head><title></title>
<frameset rows="15%,*" border=0>
<frame src="Menu.html" name="top" scrolling="no">
<frame src="Main.html" name="bottom">
</frameset>
</html>

Ваш первый файл HTML - Menu.html - вы забыли в нем проставить теги <body>, впрочем как и в следующем:
<html><head>
<title></title>
<SCRIPT language="JavaScript">
function f(link)
{
link.style.fontSize="18pt";
if(f.link) f.link.style.fontSize="11pt";
f.link = link;
}
</SCRIPT>
</head>
<body>
<table width="100%" CELLSPACING="2">
<tr>
<td align="center" height="30" bgcolor = "87CEEB" title="Главная"><a href="#" target="bottom" onclick="f(this)">Главная </a></a></td>
<td align="center" height="30" bgcolor = "87CEEB" title="О себе"> <a href="#" target="bottom" onclick="f(this)">О себе </a></td></tr>
</table>
</body>
</html>

Ваш последний файл Main.html, с проставленными тегами <body>:
<html>
<head>
<script>
function myfunc()
{
parent.frames[0].document.links[0].style.fontSize='18pt';
}
</script>
</head>
<body>
<table width="200" cellspacing="2">
<tr><td HEIGHT="50" bgcolor='#87CEEB'><A href="#" onclick="myfunc();">О себе</A></td></tr>
</table>
</body>
</html>

Внимательно проверяйте названия ваших файлов, и, в особенности их расширения.
P.S.Старайтесь писать названия тегов, функций, переменных, событий всегда с маленькой буквы, вам же будет легче и будет меньше ошибок в будуещей реализации проектов. Это не касается правил записи зарезервированных функций языком JavaScript.

   
 
 автор: Полина   (15.05.2007 в 15:12)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 15:07)
 

Ладно, спасибо БОЛЬШОЕ. Сейчас попробую все переправить. А у вас так заработало?

   
 
 автор: ilyaILF   (15.05.2007 в 15:14)   письмо автору
 
   для: Полина   (15.05.2007 в 15:12)
 

Так заработало! Проверьте названия файлов Main.html и Menu.html - в одном из них у вас расширение .htm, в другом - .html .
P.S. http://www.intuit.ru - много хороших и полезных книг, как для начального уровня, так и для более продвинутого.

   
 
 автор: Полина   (15.05.2007 в 17:36)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 15:14)
 

И ведь действительно заработало!) Клево.
Про расширение я знаю. но понимаете тут такая смешная вещь вышла, что в винде расширения *.htm не отображается. Ну например БлаБла.txt пишется, а Main.htm пишется просто как Main.
Наверно это очень глупо, но как изменить расширение я не знаю уже давно. В свойствах полазала. не нашла ничего.
Ага, а сайт этот я знаю. По JS что-то там искала.
Вобщем огромное вам спасибо!

   
 
 автор: ilyaILF   (15.05.2007 в 17:49)   письмо автору
 
   для: Полина   (15.05.2007 в 17:36)
 

Немного слов про расширения:
1). Ну уж если вам совсем не по душе Front Page, в котором полное имя файла, вместе с расширением выводится на самой закладке открытой страницы и вы можете точно увидить какой у вас файл, с расширением .htm или .html .
2). То можно открыть в блокноте ваш HTML файл и сохранить его из блокнота с произвольным расширением - .htm или .html (а также .js, .php, .css и т.д. по необходимости)
3). А чтобы просмотреть расширения файлов в обычном "Проводнике" нужно в настройках папок "Сервис" - "Свойства папки" закладка "Вид" снять галочку с пункта "Скрывать расширения для зарегистрированных типов файлов" .

   
 
 автор: Полина   (15.05.2007 в 18:54)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 17:49)
 

Ну вот это я не подумала что из блокнота поменять можно. Даже стыдно.)

   
 
 автор: CNT   (15.05.2007 в 15:21)   письмо автору
 
   для: ilyaILF   (15.05.2007 в 15:07)
 

Чуть подправлю:
<A href="#" onclick="myfunc(); return false">


И добавлю к вашему совету: написание в коде
<a href="URL"> и <body bgcolor="red">
для браузера ничем не отличается от написания
<a href = "URL"> и <body bgcolor = "red">
(т.е. пробелы между именем атрибута и значением его никакой роли не играют)

А вот написание в коде
<script>
function myfunc()
{
parent.frames[0].document.links[0].style.fontSize='18pt';
}
</script>

выполняется браузером значительно медленнее, чем то же самое, но с пробелами:
<script>
function myfunc ()
{
parent.frames [0].document.links [0].style.fontSize = '18pt';
}
</script>

Парсер браузера, разбирая код скрипта, изначально сориентирован на пробелы и переносы строк, как на разделители операторов. Если они (пробелы) будут на своих местах, парсер работает быстрее.

   
 
 автор: Полина   (15.05.2007 в 17:43)   письмо автору
 
   для: CNT   (15.05.2007 в 15:21)
 

Правда? А мне все время было интересно зачем эти пробелы вставляют.
Зачем return false?

Даже когда C++ изучали не понимала зачем там return 0 в конце.

   
 
 автор: CNT   (15.05.2007 в 18:12)   письмо автору
 
   для: Полина   (15.05.2007 в 17:43)
 

При клике по ссылке обычно (т.е. по умолчанию) происходит переход страницы на URL, прописанный в атрибуте HREF
В данном случае вам же никуда переходить не надо, клик вам нужен для изменения размера шрифта в другом фрейме.
Вот поэтому инструкцией return false и отменяется "действие по умолчанию".

PS. Если ONCLICK будет написан у, например, ячейки таблицы, вот так: <td onclick="parent.frames [0].document.links [1].style.fontSize = '18pt'">text</td>, то никакого return false не надо - ведь обычно (по умолчанию) при клике по ячейке ничего ведь не происходит, значит, ничего и не надо отменять...

   
 
 автор: Полина   (15.05.2007 в 18:58)   письмо автору
 
   для: CNT   (15.05.2007 в 18:12)
 

Понятно. Только в моем случае получается, что return false писать не нужно, т.к. у меня не только меняется шрифт в другом фрейме, но и по ссылке осуществляется переход по ссылке в том же фрейме, где ссылка.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования