Avatar billede superraider Nybegynder
23. november 2004 - 19:06 Der er 16 kommentarer og
2 løsninger

højden på en iframe, hvordan ændres med javascript.

Hey

har ldit problemmer.
fi kaf hvide at dette skulle kunne ændre det
parent.frames['frame3'].style.height = '300px';
men det virker ikke.

scriptet bliver kørt i en iframe, og det er størelsen på en anden iframe.
Avatar billede skovenborg Nybegynder
23. november 2004 - 19:18 #1
det er fordi parent.frames['frame3'] henviser til window-objektet indeni iframen og ikke selve iframe-elementet.
Derfor bliver du nødt til at sige:
parent.document.getElementsByName('frame3')[0].style.height = '300px';
hvis din iframe ser sådan ud:
<iframe name="frame3"></iframe>
Avatar billede skovenborg Nybegynder
23. november 2004 - 19:19 #2
eller tilføj en id:
<iframe name="frame3" id="frame3"></iframe>
så kan du skrive:
parent.document.getElementId('frame3').style.height = '300px';
Avatar billede superraider Nybegynder
23. november 2004 - 19:44 #3
ok, bruger bare navn. hvorfor er der [0] med der
Avatar billede superraider Nybegynder
23. november 2004 - 19:47 #4
hvorfor vil dette ikke virke, den sætter den lig med 20

var newheight = parent.document.getElementsByName('frame3')[0].style.height + 20
parent.document.getElementsByName('frame3')[0].style.height = newheight;
Avatar billede skovenborg Nybegynder
23. november 2004 - 20:07 #5
nok fordi parent.document.getElementsByName('frame3')[0].style.height er en tekststreng og ikke et tal. Du bliver derfor nødt til at sige:
var newheight = parseInt(parent.document.getElementsByName('frame3')[0].style.height) + 20;
parent.document.getElementsByName('frame3')[0].style.height = newheight;

Forresten er [0] til fordi getElementsByName returnerer et array med alle elementer med det bestemte navn. Det er nemlig, modsat id, lovligt at have flere elementer med samme navn. Men jeg regner nu med det eneste element med navnet frame3 er iframen hvorfor jeg siger [0] (det første element i det returnerede array).
Avatar billede superraider Nybegynder
23. november 2004 - 20:19 #6
jep jep,var også hvad jeg troede, skulle lige være sikker.
Avatar billede superraider Nybegynder
23. november 2004 - 20:19 #7
point tak
Avatar billede superraider Nybegynder
23. november 2004 - 20:21 #8
elelr det virker stadig ikke
var newheight = parseInt(parent.document.getElementsByName('frame3')[0].style.height) + 20;
parent.document.getElementsByName('frame3')[0].style.height = newheight;
Avatar billede superraider Nybegynder
23. november 2004 - 20:22 #9
kunne forestilel mig, at det skulle laves om til en tekst-streng igen.??
Avatar billede skovenborg Nybegynder
23. november 2004 - 20:23 #10
hmm, mon ikke det fordi du har glemt enheden:
parent.document.getElementsByName('frame3')[0].style.height = newheight + "px";
Avatar billede superraider Nybegynder
23. november 2004 - 20:31 #11
får ugyldigt argument i
var newheight = parseInt(parent.document.getElementsByName('frame3')[0].style.height) + 20;


det var ikke px
Avatar billede skovenborg Nybegynder
23. november 2004 - 20:37 #12
okay, et eller andet sted eksisterer et element ikke. Den bedste måde umiddelbart at teste hvor det går galt, er at hendholdsvis sige:
alert(parent.document.getElementsByName('frame3'));
så kan du se om den overhovedet kan finde iframen. Herefter prøver vi med:
alert(parent.document.getElementsByName('frame3')[0].style);
for at se om style-objectet findes (skulle det meget gerne).

Altså prøv dig lidt frem ved at gå længere og længere ind mod det samlede resultat, og check om resultatet i alert-boxen ikke bliver til undefined.
Avatar billede superraider Nybegynder
23. november 2004 - 21:00 #13
alert(parent.document.getElementsByName('frame3'));  giver [objekt]
Avatar billede superraider Nybegynder
23. november 2004 - 21:02 #14
jeg bruger IE, har det noget at sige
Avatar billede superraider Nybegynder
23. november 2004 - 21:06 #15
har også prøvet med id. der virker det heler íkke
objektet understytter ikke denne metode elelr egenskab
Avatar billede superraider Nybegynder
23. november 2004 - 21:55 #16
her er svaret
var newheight = parent.document.getElementById('frame3').contentWindow.document.body.scrollHeight;
parent.document.getElementById('frame3').style.height=newheight;

post så får du halvdelen af pointene
Avatar billede skovenborg Nybegynder
23. november 2004 - 22:12 #17
hmm, jaja - sådan kunne man også gøre ;-) Men fint du selv fandt ud af det -havde ikke lige tid til at svare tilbage før nu ;-)
Avatar billede superraider Nybegynder
23. november 2004 - 22:35 #18
helt i orden, men gad stadig godt vide hvad fejlen var på den anden. men den sids funde løsning er den mest optimale, så tilpasser den selv indholdet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester