27. august 2005 - 16:59Der er
21 kommentarer og 1 løsning
document.write
Hvordan kan det være at når man skriver
<script> document.write("hej med dig"); <script>
på en side, så bliver teksten skrevet på det pågældende sted på siden, men når man bruger document.write i en funktion (f.eks. som herunder), så bliver teksten skrevet på en helt ny tom side.
<script> function minfunktion(){ document.write("hej med dig"); } <script>
Mit spørgsmål er så. Hvad gør jeg for at få min tekst skrevet ud på min side når jeg vil bruge en funktion til det?
Hvis du laver din funktion i head, så bliver den vel skrevet ud der hvor du kalder funktionen på din side
Synes godt om
Slettet bruger
27. august 2005 - 17:24#2
document.write uden funktionen gør at det bliver udført, når siden renderes.
Når du så efterfølgende kalder den inde fra en funktion, så er siden jo i forvejen renderet og dermed vil document.write "overskrive" dit oprindelige document, med indholdet af document.write
Synes godt om
Slettet bruger
27. august 2005 - 17:32#3
btw, kalder du funktionen udenom en event-handler (ex onclick osv), så vil det blive udført i dit oprindelige dokument.
Ja, det er fordi renderingen af dit dokument er færdig på det tidspunkt hvor du udsører document.write og document bliver derfor overskrevet.
Hvis du laver en funktion og kalder den under selve renderingen af dokumentet vil den skrive output på den aktuelle side, ellers i et nyt dokument.
Hvis du vil ændre på det aktuelle dokuments indhold, skal du bruge de i DOM dertil indrettede funktioner, herunder innerHTML på det element du vil ændre indholdet af.
<div id="nyTekstHer"></div> <a href="java script:void(skrivNyTekst(document.getElementById('nyTekstHer'),'Nyt HTML-indhold i et dokument-element...'))">Indsæt nyt indhold</a>
-- og det kan da præciseres til, at man kun kan lave en document.write() til et åbent dokument !-)
-- så udføres en document.write under indlæsningen af dokumentet, vil dokumentet være åbent og skrivningen foregår bare der, hvor den er nået til ...
-- til gengæld vil dokumentet implicit blive lukket, når indlæsningen er overstået, og når der så senere udføres en document.write, vil javascript-motoren være nødt til at åbne dokumentet først, hvorved det allerede indlæste vil forsvinde !o]
-- og softspots eksempel kan glimrende bruges i alle de browsere, jeg kender, på trods af, at innerHTML egentlig aldrig har været at finde i nogen specifikation af javascript DOM-bindings ...
-- når vi begynder at kunne bruge xhtml vil det til gengæld blive nødvendigt at bruge de rigtige xhtml DOM-bindings, og vil f.eks. kunne se således ud:
<script type="text/javascript"> function skrivNytIndhold(objElement, strTekst){ if(objElement){ objElement.appendChild(document.createTextNode(strTekst)); } } </script>
<div id="nyTekstHer"> </div> <a href="java script:void(skrivNyTekst(document.getElementById('nyTekstHer'),'Nyt tekst-indhold i et dokument-element...'))">Indsæt nyt indhold</a>
-- bemærk i div-tagget, hvorved vi har en childNode, vi kan gøre noget ved !-)
-- bemærk også, at jeg ændrede teksten i funktionskaldet, for skal man benytte sig af html-elementer skal man helt ud i rigtig DOM-binding og skabe elementerne først, appende dem og eventuelt lægge f.eks. tekst-noder ind i !-)
Rigtig mange tak for de detaljerede svar, men kan det slet ikke gøres kortere? Det jeg skal, er at kalde en funktion der så bruger document.write() til at skrive noget ud på min side. Jeg skal jo slet ikke bruge xhtml eller noget af det andet (tror jeg da nok)..
okay! er ikke så erfaren med javascript og kan bare ikke få noget af jeres kode til at fungere. det er jo efter, når det er når jeg trykker på en knap som starter en funktion..
det eneste jeg vil vide er hvordan jeg får printet en tekst ud på en side. document.write("hello world") virker åbenbart ikke, så hvordan kan jeg så gøre det istedet for?
Det virkede softspot. Synes godt nok det er utroligt at man er nødt til at skrive så meget, bare for at få en simpel tekst skrevet ud på et bestemt sted på en side i javascript.
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.