Avatar billede lothario Nybegynder
08. januar 2003 - 02:00 Der er 14 kommentarer og
1 løsning

Bruge iframe 'name' attribut

Hvorfor virker min name-tag ikke når jeg bruger den med en iframe sådan her:

<iframe name="test" width="380"></iframe>

document.test.write("Test");

Jeg har brugt en tabel til at opbygge hjemmesiden, men har brug for at kunne skrive til 'midten' af den med document.write, så jeg tænkte en iframe ville være løsningen. Hvis ikke iframe kan gøre det, hvordan så?
Avatar billede olebole Juniormester
08. januar 2003 - 02:29 #1
<ole>

  frames['test'].document.write( 'text' );
  frames['test'].document.close();

eller:

Du kan skrive ind i et span, div eller tabelcelle med:
  document.getElementById("test").innerHTML = "text";

Hvis den har id="test"

/mvh
</bole>
Avatar billede lothario Nybegynder
08. januar 2003 - 03:16 #2
Nu får jeg fejlmeddelelsen:

frames.test.document is null or not an object.
Avatar billede olebole Juniormester
08. januar 2003 - 03:31 #3
Du kan naturligvis ikke kalde script'et, før siden har tegnet din iframe ... med andre ord: tidligst på onload  ;o)
Avatar billede lothario Nybegynder
08. januar 2003 - 09:48 #4
Her kalder jeg scriptet:

<td><iframe name="disp" src="blank.htm" width="380"><script>display(overtest);</script></iframe></td>

SÅ det burde ikke være et problem. Her er hele mit script:

function display(a) {   

   
    width = 4;  /*antal celler pr. række*/
    b = a.length ;  /*antal celler som skal bruges*/
    height = Math.ceil(b/width);    /*antal rækker*/
    base = width - modulo(b,width);    /*antal celler i sidste række*/
    if (b<width){base=0};
   
   
    if (height==0)
      {height = 1};
    frames['disp'].document.write("<TABLE width=\"580\" border=\"0\">");
 
    var f=0; 
    for (d=0;d<=height-1;d++) {
           
            frames['disp'].document.write("<TR align=\"center\">");
                        if (d == height-1) {don = base} else {don=0};
                        /*sørger for iterationen stopper i tide i sidste række*/
           
            for (e=don;e<=width-1;e++) {
                frames['disp'].document.write("<TD valign=\'top\'>");
                show(a[f]);
                f++;                         
                frames['disp'].document.write("</TD>");
            };
        frames['disp'].document.write("</TR>");
    };
   
   
frames['disp'].document.write("</TABLE>"); 
};
Avatar billede Slettet bruger
08. januar 2003 - 16:26 #5
Når du sætter script-taggene inde i iframen, bliver de kun udført af browsere, der ikke kender iframes. Desuden hedder det vist document.frames["disp"].document.write("...");
Avatar billede olebole Juniormester
08. januar 2003 - 16:31 #6
Jo netop  :o)
Du kan ikke have noget script (eller andet) stående i dit iframe-tag. Kald script'et på onload i dit body-tag.

Hvis ikke der står noget i dit 'blank.html', kan du bare skrive src="about:blank".
/mvh
Avatar billede olebole Juniormester
08. januar 2003 - 16:38 #7
phoenixv >> frames er knyttet til window-objektet (som altid er underforstået, hvis andet ikke er specificeret). Derfor hedder det ikke 'document.frames......' men 'frames.....', som jeg skrev tidligere  :)
At IE så forstår det andet, er en anden sag - men den overholder heller ikke standarder for ret meget. Mozilla/NS forstår det ikke.
/mvh
Avatar billede Slettet bruger
10. januar 2003 - 16:53 #8
Jeg vidste godt, at "normale" frames hører til i window.objektet, men jeg gik ud fra, at iframes, som jo er en del af et dokument, dermed er medlem af document-objektet... Det var så bare forkert! :)
Avatar billede olebole Juniormester
10. januar 2003 - 21:43 #9
Jeg forstår sagtens din undren, men alle frames er i sig selv window-objekter og et window-objekt kan ikke residere under document i hierakiet ... de udgør det ubestridelige 'aristokrati'  ;D
/mvh
Avatar billede Slettet bruger
11. januar 2003 - 10:09 #10
Så er der da noget, der er ubestrideligt... Godt at høre! :)
Avatar billede lothario Nybegynder
11. januar 2003 - 10:15 #11
Jeg lavede designet om, så jeg nu ikke skal bruge iframes på den måde, men tak fordi i forsøgte
Avatar billede olebole Juniormester
11. januar 2003 - 17:57 #12
Jamen, vi takker behørigt fordi, du så generøst belønner folk for at bruge deres fritid på at hjælpe dig - og giver dig korrekte svar.
Avatar billede Slettet bruger
12. januar 2003 - 12:26 #13
Det er efterhånden ved at blive en dårlig vane herinde... Folk tror, at de kun skal give point, hvis de kan bruge svaret, selvom det jo ikke har noget som helst hold i virkeligheden.
Avatar billede lothario Nybegynder
12. januar 2003 - 17:01 #14
Det var nu ikke ment på den måde. I må da gerne få pointene, men jeg ved ikke om i kan svare igen.
Avatar billede Slettet bruger
12. januar 2003 - 17:12 #15
Det kan vi ikke, nej. Og pointene er jeg sådan set også ligeglad med; det er princippet i det, der er afgørende. Det eneste, jeg er ude efter, er en smule anerkendelse af min hjælp.
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