Avatar billede dennism Nybegynder
15. oktober 2004 - 12:51 Der er 18 kommentarer og
1 løsning

JavaScript: document.write

Jeg har følgende script:

Hej
<script language="JavaScript">
function print_groups() {

for (n=1 ; n<=num_inputgroups.value ; n++) {
document.write("<strong>Gruppe "+n+":</strong>");
}

}
</script>

Når funktionen bliver kørt, bliver det tekst jeg har før scripet slettet (i dette eks. hej). Hvordan kan det være - og hvordan forhindrer jeg det?
Avatar billede hardstyle_master Nybegynder
15. oktober 2004 - 12:53 #1
Er det endelig ikke

document.write("<strong>Gruppe '+n+:</strong>");
Avatar billede dennism Nybegynder
15. oktober 2004 - 12:55 #2
Nej, for n er jo en variebel, som jeg vil have printet.
Avatar billede hardstyle_master Nybegynder
15. oktober 2004 - 12:56 #3
<strong>
document.write(n);
</strong>
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 12:57 #4
hvad med innerHTML i stedet.

document.getElementById('indhersgu').innerHTML = ""; // sletter først
for (n=1 ; n<=num_inputgroups.value ; n++) {
document.getElementById('indhersgu').innerHTML +=("<strong>Gruppe "+n+":</strong>");
}

<div id="indhersgu"></div>
Avatar billede dennism Nybegynder
15. oktober 2004 - 12:57 #5
Skidt nu med det..det gør i bund og grund ikke nogen forskel. Er mere interesseret i at teksten der kommer før, ikke bliver fjernet.
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 12:58 #6
<script type="text/javascript">
function print_groups() {
    document.getElementById('indhersgu').innerHTML = ""; // sletter først
    for (n=1 ; n<=num_inputgroups.value ; n++) {
        document.getElementById('indhersgu').innerHTML +=("<strong>Gruppe "+n+":</strong>");
    }
}
</script>

<div id="indhersgu"></div>

for lige at vise det rigtigt ;-)
Avatar billede dennism Nybegynder
15. oktober 2004 - 13:01 #7
Hvorfor er det, at du først slettet div'en?
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:02 #8
Mest hvi du skulle finde på at kalde funktionen igen - Så vil den jo liste det samme én gang mere.
Avatar billede dennism Nybegynder
15. oktober 2004 - 13:16 #9
Oki. Tak. Smider du lige et svar?`

Kan du iøvrigt fortælle mig, om der er en måde hvorpå man hurtigt kan kopiere én array? jeg har en array, som jeg ønsker kopiere, blot med den forskel af den nye array har et andet navn.
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:22 #10
a = new Array("hej","du","gamle")
b = a;

eller løb den igennem?

/Nikolaj
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:23 #11
En detalje - det hedder "et" array ;-)
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 13:25 #12
nu bliver jeg sgu helt i tvivl om en eller et... nå what the pokker.
Avatar billede dennism Nybegynder
15. oktober 2004 - 13:59 #13
nikolajdu >>

Jeg har nu testet og testet..og det viser sig, at når jeg siger b = a i toppen af mit script, så vil værdien af b igen ændre sig, hvis jeg f.eks. ændre værdien af a[2].
Hvordan kan det være?
Avatar billede dennism Nybegynder
15. oktober 2004 - 14:01 #14
Prøv f.eks. dette:

<script language="JavaScript">
a = new Array("hej","du","gamle")
b = a;

alert(a[2]+", "+b[2])

a[2] = "test"

alert(a[2]+", "+b[2])
</script>

b[2] skulle stadig gerne være "gamle", selvom jeg har ændret a[2] til "test".

Virker det ikke underligt?
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 14:12 #15
Var også lidt i tvivl om man kunne gøre sådan. Gør sådan her - det virker ihvertilfald efter hensigten.

b = new Array();

for(i in a){
    b[i] = a[i]
}
Avatar billede dennism Nybegynder
15. oktober 2004 - 14:17 #16
Hvad betyder "i in a"?
Avatar billede roenving Novice
15. oktober 2004 - 14:17 #17
Nej, du laver ikke en kopi af et array ved at sætte en anden variabel til det første array, for begge variable vil pege på det samme objekt !-)

Umiddelbart kan jeg ikke komme i tanke om andre måder at lave kopier end ved at kopiere hver værdi over ...

-- og forklaringen på, at tidligere skrevet tekst i dokumentet forsvinder, er, at document.write() kun virker overfor et åbent dokument, hvorfor dokumentet må åbnes, og derved forsvinder tidligere indhold !o]
Avatar billede dennism Nybegynder
15. oktober 2004 - 14:21 #18
Tusind tak
Avatar billede nikolajdu Nybegynder
15. oktober 2004 - 14:31 #19
for(i in a)

svarer til :

for (i = 0; i < a.length; i++){
  b[i] = a[i];
}

Vi løber altså alle elementer i a igennem.
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