Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Передача переменных между фрэймами


Автор: tired 12.3.2008, 05:21
доброго времени суток!
надо передать между фрэймами несколько значений переменных посредством JavaScript чтобы в зависимости от них загружался разный контент.как это сделать?
можете для примера на 2-х фрэймах показать вот с такой задачей(приспособить под свою страницу я думаю смогу smile )
(кое что опущу)
Код

var firstvar
var secontvar
function PutToFrame(firstvar, secondvar)
{
parent.main.location.href="MainPage.htm"
}
...
<input type="button" name="btnGoTo" onclick="PutToFrame('mother','father')" value="Show">

на MainPage.htm есть несколько обьектов(предположим пара текстовых полей с именами MyText1 и MyText2).надо чтобы значение переменных firstvar и secondvar записались в текстовые поля.

я сам бился бился никаких идей smile 

Автор: FortMax 12.3.2008, 05:40
т.е. должна происходить передача данных от одного файла к другому ? если так то, по-моему, тут без серверных технологий не обойтись ...

Автор: tired 12.3.2008, 07:16
да именно так.еще как вариант я пытался динамически создать документ но функция почемуто не всегда работала корректно и еще я не знаю как загрузить в фрэйм только что созданный документ.
вот сама функция:
Код

function ItemPage(name,cost,category)
{
var ItemName = name;
var ItemCost = cost;
var ItemCategory = category;
var ItemAbout;
if (name=="Bioshock") {ItemAbout="О игре Bioshock"} else {
if (name=="Counter-Strike:Sorce") {ItemAbout="О игре Counter-Strike: Source"} else {ItemAbout="Описание отсутствует"};
} ;
myWin=open(ItemName + ".htm");
myWin.document.open();
myWin.document.write("<html><head><title>Интернет-магазин." + ItemCategory + "." +  ItemName +  ".</title></head>");
myWin.document.write("<body>");
myWin.document.write("<font name='Comic Sans MS' size='24'>" + ItemCategory + ":" + ItemName + "<br>" + "<p>" + ItemAbout + "</p></font>");
myWin.document.write("<br>Цена: " +ItemCost + "</body></html>");
}

содержания создоваемого документа пусть вас не пугает, это пробный вариант))
а вот так я ее вызывал:
Код

<a href="javascript:ItemPage('Bioshock',299,'Actions')">Bioshock</a>


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

Автор: FortMax 12.3.2008, 09:04
лучше бы на серверных языках сделал, так далеко не уедешь !!! JavaScript не сможет передать данные на сервер ...

Автор: tired 12.3.2008, 09:26
я кроме VB,HTML и JavaScript ничего не знаю(причем последние 2 только обложившись кучей литературы)
а может мне кто-нибудь сказать из-за чего функция не коректно работает с разными значениями параметров?
как видно из скрипта мой сайт должен продавать диски.так вот такая ерунда получается что если вызывать функцию с такими параметрами:
Код

<a href="javascript:ItemPage('Counter-Strike:Source',299,'Actions')">Counter-Strike: Source</a>
то все нормально
а если с такими:
Код

<a href="javascript:ItemPage('Bioshock',299,'Actions')">Bioshock</a>

то "Не удается найти...".поставил MSSD,он выделяет вот эту строчку
Код

myWin=open(ItemName + ".htm");

вопрос: почему? smile  smile 

Автор: bars80080 12.3.2008, 10:48
собственно неясно в чём загвоздка,
если документы открываются в одном браузере, пусть даже во фрэймах между ними есть связь (если только они не принадлежат разным доменам)

пример не разбирал, но могу предложить примерно так:
index.html
Код

<html>
<frameset cols="30%, *">
<frame name="left_fr" src="left_fr.html">
<frame name="right_fr" src="right_fr.html">
</frameset>
</html>

left_fr.html
Код

<html><body>
<script>
function alert_left(x) {
    alert('left frame: ' + x); }
function move_par() {
    var a = document.forms[0].lt1.value;
    var b = document.forms[0].lt2.value;
    parent.right_fr.document.forms[0].rt1.value = a;
    parent.right_fr.document.forms[0].rt2.value = b;
}
</script>
left...
<input type="button" value="left button" onclick="top.right_fr.alert_right('from left')" />
<form>
<input type="text" name="lt1" />
<input type="text" name="lt2" />
<input type="button" value="move param to right" onclick="move_par()" />
</form>
</body></html>

right_fr.html
Код

<html><body>
<script>
function alert_right(x) {
    alert('right frame: ' + x); }
function move_par() {
    var a = document.forms[0].rt1.value;
    var b = document.forms[0].rt2.value;
    parent.left_fr.document.forms[0].lt1.value = a;
    parent.left_fr.document.forms[0].lt2.value = b;
}
</script>
right...
<input type="button" value="right button" onclick="top.left_fr.alert_left('from right')" />
<form>
<input type="text" name="rt1" />
<input type="text" name="rt2" />
<input type="button" value="move param to left" onclick="move_par()" />
</form>
</body></html>

Автор: tired 12.3.2008, 11:13
щас прикиним посмотрим что получиться))

Добавлено @ 11:22
bars80080
Ooo, Thanks!!! smile 
Был бы я девочкой расцеловал бы!!! smile 

Автор: tired 12.3.2008, 22:20
еще одна маленькая трабла:
создал документ в который должны передаваться переменные, создал в Menu.htm функцию которая загружает в фрэйм документ и передает в этот документ переменные
Код

function ShowItem(ItemName,ItemCost,ItemType)
{
var ItemName;
var ItemCost;
var ItemType;
parent.main.location.href="ShowItem.htm";
parent.main.document.InputName.ItemName.value = ItemName;
}


в ShowItem.htm есть таблица в ней расположено поле
Код

<table>
 <tr>
  <td><font class="orDizzz12pt">Название диска:</font></td>
  <td>
   <form name="InputName">
    <input type="text" name="ItemName" onFocus="blur()" value="">
   </form>
  </td>
 </tr>
</table> 

но почемуто возникает ошибка
"parent.main.document.InputName.ItemName" - есть null или не является обьектом
мб JavaScript не воспринимает форму в ячейке таблицы как объект?

Автор: bars80080 13.3.2008, 10:56
возможно, браузер не успевает подгрузить документ, поэтому следующая команда обращается на несуществующий объект

если так, то надо сделать проверку на загрузку документа

Автор: tired 14.3.2008, 17:55
решил эту траблу, разделив скрипт на 2 части: 1)загрузка документа в фрэйм и 2) передача переменных и поставил таймер на срабатывание второго скриптаsmile спс за помосчь!)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)