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


Автор: kb-nn 21.1.2004, 12:21
Здравствуйте!
у меня очередной вопросик.

вобщем так.
есть фреймосодержащий док. (назовем его index.html)
<html>
<script language=javascript>
<--
var a=1;
function f(){
a=2;
frames['menu'].document.f.n.value=10;
frames['menu'].location.reload;
}
//-->
</script>
<frameset cols="150,*">
<frame name=menu src="menu.html">
<frame name=main src="main.html">
</frameset>
</html>
в одном из фреймов, (menu.html), кроме всего прочего,есть код.

<script language="javascript">
<!--
document.open();
document.write(parent.a);
document.close();
//-->
</script>

также там содержится
<form name=f>
<input type=text name=n>
</form>
теперь я в другом фрейме (main.html) вызываю функцию parent.f()
и жду, чтобы в фрейме menu у меня изменилось значение a
(стало равным 2) Но этого почему- то не происходит.
Хотя значение элемента n формы f изменяется правильно, там оказывается 10.
а почему не меняется значение переменной a. Хотя на самом деле значение её изменилось правильно, это видно из дальнейшей работы скрипта.
но вот почему её значение не обновляется во фрейме?

Автор: Sardar 23.1.2004, 01:47
Цитата
frames['menu'].location.reload;

Страница не перезагружается, в этом причина.
frames['menu'].location.reload();

Автор: kb-nn 23.1.2004, 12:00
очень странная вещица!!!!

если reload() (со скобками), то обновляется значение переменной a , но перестает обновляться значение текстового поля
если reload (без скобок), то всё с точностью до наоборот- поле обновляется, не обновляется
a

почемуconfused.gif Хотелось бы, чтобы всё обновлялось

P.S. всё- таки хорошо, что вы есть! спасибо!

Автор: Sardar 23.1.2004, 16:44
Естественно smile.gif, форма перегружается и теряет все что было. Совет: отказатся от перезагрузки страницы и менять, в том месте где у тебя document.write(), поле innerText(innerHTML).
Пример:
Код

//в index.htm->f()
window.frames['menu'].document.all.t.innerText=parent.a;
//в menu.htm
<tr><td id=t>0</td></tr>


Автор: kb-nn 26.1.2004, 11:04
а чтобы работало и для оперы, и для нетскейпа. надо писать

var br="":
if(document.all) {br=all;}
if(document.layers) {br=layers;}
if(document.getElementById) {br=getElementById;}
window.frames['menu'].document.br.t.innerText=parent.a;
да?

Автор: kb-nn 29.1.2004, 10:57
ау!
меня не слышно?

а у меня очередной вопрос по этой же теме.
как мне как- то отформатировать это самое parent.a?
например, сделать жирным?

Автор: Sardar 30.1.2004, 01:10
Цитата
а чтобы работало и для оперы, и для нетскейпа. надо писать

var br="":
if(document.all) {br=all;}
if(document.layers) {br=layers;}
if(document.getElementById) {br=getElementById;}
window.frames['menu'].document.br.t.innerText=parent.a;
да?

Вот так можно, автор Cheba:
Код

function findObj(theObj, theDoc)
{
 var p, i, foundObj;
 
 if(!theDoc) theDoc = document;
 if( (p = theObj.indexOf("?")) > 0 && parent.frames.length) {
   theDoc = parent.frames[theObj.substring(p+1)].document;
   theObj = theObj.substring(0,p);
 }
 if(!(foundObj = theDoc[theObj]) && theDoc.all)
   foundObj = theDoc.all[theObj];
 for (i=0; !foundObj && i < theDoc.forms.length; i++)
   foundObj = theDoc.forms[i][theObj];
 for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)
   foundObj = findObj(theObj,theDoc.layers[i].document);
 if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
 return foundObj;
}
//Copyright © [K]Sys, [K]Dev department, Mankuta [Cheba] Alexandr


Примеры использования:
Код

obj=findObj("text"); //найти обьект с ID=text в этом документе
win=window.open("./page.htm","test","width=300,height=250");
obj=findObj("text",win.document); //найти обьект в окне win(page.htm)
obj=findObj("text?frame_name"); //найти обьект во фрейме frame_name
obj=findObj("t?menu"); //это для тебя

Делай выводы... smile.gif

Для форматирования текста применяется... HTML smile.gif. Используется по разному:
1) obj.innerHTML="<b>"+parent.a+"</b>";
2) obj.document.write("<b>"+parent.a+"</b>");

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