Проблема с передачей переменных в javascript из iframe

JohnB

Новичок
Проблема с передачей переменных в javascript из iframe

Есть форма.

<form action='' method='post' name='send' id='send'>
<input type='hidden' name='action' value='add_gzad'>
<input type='text' name='id' value=''>
<input type='hidden' name='id_sum' value='$num8'>
...
<input id=sub type=submit value='Добавить задачу' onClick='addSum(); return false;'>
</form>

и javascript обработчик.

function addSum()
{
form = document.getElementById("send");
id = form.id.value;
id_sum = form.id_sum.value;

alert(id);

}

т.е. просто функция получает переменные и выводит их. и все работает.

Но вот когда такая же функция с такими же полями выполняется из скрытого iframe в который загружена эта форма.
то переменные в Opera не передаются...( в IE все нормально.

вот функция которая выполняется из формы в iframe

function addSum()
{
form = window.frames['имя_фрейма'].document.getElementById('id_формы');

id = form.id.value;
id_sum = form.id_sum.value;

alert(id);
}

переменные выводятся ==0 хотя если поставишь значние value в форму то будет передаваться эти значения.
Т.е. те, которые вводишь в форму ручками не передаються.

В чем может быть проблема?

-~{}~ 26.09.08 11:40:

Не у кого не каких мыслей нет?
 

FB3

Новичок
Вероятнее всего, потому что данные берутся из HTML кода страницы, а он не меняется. Попробуй получать через DOM.
 

FB3

Новичок
А че без мата-то? :)
Спокойно нельзя написать, чтобы взяли и попробовали? Я думал, что автор топика возьмет, попробует и отпишется.
 

JohnB

Новичок
Из предложеных на dclab могу подчеркнуть только последний пункт.

"давайте элементам формы не только name, но и id и обращайтесь к ним через getElementById "

Но чтобы обратится к форме через getElementById в фрейме такая конструкция просто не проканает.

Сейчас проверю и отпишусь.

-~{}~ 29.09.08 05:58:

Не проканало dimagolov, не один из вариантов.

Скорее всего FB3 прав. Это из за того что html документ не меняется на контент загруженый в iframe :(((

Надо получать через dom только я его знаю поверхностно.
Придется сидеть юзерам пока в ie, благо проект локальный.

FB3, Если есть время подскажи как получить переменные через DOM

-~{}~ 29.09.08 10:57:

Не помогает что

parent.frames['имя_фрейма'].document.getElementById('id_формы');

что window.frames['имя_фрейма'].document.getElementById('id_формы');

что document.getElementById('имя_фрейма').contentWindow.document.getElementById('id_формы');

не одна из конструкций данных формы из iframe не видит.

-~{}~ 29.09.08 10:57:

Причему для IE достаточно такой конструкции допустим
form2 =document.getElementById("id_формы");

и данные видим!!!


а в Opere верхняя конструкция вообще не вызывает ничего. а вот такая

form2 = window.frames['имя_фрейма'].document.getElementById('id_формы');
или такая
form2 = parent.frames['имя_фрейма'].document.getElementById('id_формы');

при alert(form2); выдает типа object HTMLFormElement
т.е. форму видит а данные из ее полей нет :(((
 

dimagolov

Новичок
JohnB, а у тебя главная страничка и фрейм с одного домена или разных? И нафига ты ищешь форму, когда тебе нужны инпуты? мой совет был про id инпутов.

Чтобы не страдать фигней с многоэтажными обращениями через DOM сделай в своем фрейме ф-ю, которая бы работала с инпутами, и просто вызывай ее с нужными параметрами из родительского фрейма.
 

JohnB

Новичок
...

-~{}~ 30.09.08 11:00:

по поводу нафига я ищу форму. Потому что потом очень легко обратиться к ее элементам по конструкции
допустим id=form2.id.value;

-~{}~ 30.09.08 11:03:

Где form2=window.frames['имя_фрейма'].document.getElementById('id_формы');

-~{}~ 30.09.08 15:55:

FB3 , залить проблематично. поскольку проект локальный. крутиться на внутреннем веб сервере.

:(
 

dimagolov

Новичок
JohnB, ну что, до сих пор ты не понял, что твои form2.id смотрят не туда? посмотри на http://www.w3schools.com/htmldom/dom_obj_form.asp и покажи мне там обоснование того, что так можно делать. ТАК ДЕЛАТЬ НЕЛЬЗЯ и я тебе это сказал с самого начала. ты слушать не хочешь и уже неделю страдаешь фигней.

удачи страдать фигней дальше.
 

JohnB

Новичок
а куда они смотрят? имена тут не причем если ты про них. через id элемента пробовал таже ерунда.

остался вариант с функцией в в фрейме которая будет выгребать данные. тока как их потом передать основному документу опять вопрос.
 
Сверху