|
|
|
| есть такой код:
1.
document.getElementById("id_div").innerHTML="<iframe id='id_fr_selected' name='id_fr_selected' src='...'> /iframe>";
|
и
2.
fr=window.frames["id_fr_selected"];
|
Всё бы хорошо, но когда код 1 выполнить два и более раза то в Mozille больше не присваивается значение fr (код 2).
Где я ошибаюсь? | |
|
|
|
|
|
|
|
для: serenya1983
(21.04.2010 в 00:33)
| |
document.getElementById("id_div").innerHTML="<iframe id='id_fr_selected' name='id_fr_selected' src='...'> /iframe>";
| здесь свою ошибку видите?
Подсказываю: закрывающий тег </iframe> надо писать именно ТАК. | |
|
|
|
|
|
|
|
для: АЯ
(21.04.2010 в 01:16)
| | ой, это тут я так написал, в коде конечно всё в порядке в данном месте!!! | |
|
|
|
|
|
|
|
для: serenya1983
(21.04.2010 в 02:39)
| | Давайте рассуждать логически.
Первым присвоением innerHTML для дива вы создали новый объект - ифрейм.
Затем в переменную fr вы помещаете именно этот (первоначально созданный) объект.
Следующим переприсваиванием innerHTML для дива вы, во-первых, уничтожаете первоначально созданный объект (первый ифрейм) и, во-вторых, создаёте НОВЫЙ объект (второй ифрейм). Переменная же fr имеет ввиду тот самый ПЕРВЫЙ ифрейм, который уничтожен переприсваиванием. Но переменная fr об этом "уничтожении" ничего не знает. Для неё неважно, что второй ифрейм имеет того же родителя (тег див) и такой же id (и name), она помнит тот самый первый ифрейм. Которого уже нет в природе.
Ситуация аналогична вновь открываемому методом window.open окну, когда переменной присваивается открываемое новое окно. Пользователь вручную закрывает это новое окно, а переменная ничего об этом не знает. И когда вы обращаетесь к переменной, та (вместе с браузером) оказываются "в ступоре". Ибо переменная является ссылкой на несуществующий объект.
Код нумер один вам надо дополнить ВПЕРЕДИ оператором fr = null; | |
|
|
|
|
|
|
|
для: АЯ
(21.04.2010 в 03:46)
| | дак присвоение fr=window.frames["id_fr_selected"]; идёт каждый раз перед тем как надо обратиться к фрейму, и переменная fr находиться внутри функции, поэтому врятли она имеет ссылку на первоначальный фрейм! Тут что-то другое (не работает только в Mozilla)! | |
|
|
|
|
|
|
|
для: serenya1983
(21.04.2010 в 04:34)
| | решил проблему примерно так:
obj=document.getElementById("id_div");
if (obj.innerHTML=="") obj.innerHTML"<iframe id='id_fr_selected' name='id_fr_selected' src='...'> /iframe>";
else
{
fr=window.frames["id_fr_selected"];
fr.document.location.href="...";
}
|
| |
|
|
|