createElement()

Tags:    javascript

Hvis jeg i HTML skriver <div>tekst</div> hvordan laver jeg så det samme kun ved at bruge javascript ?

Følgende kode virker ikke.
<script>

noget = document.createElement("div");
noget.innerHTML = "tekst";

</script>
Er det et eller andet med at man skal bruge appendChild() eller sådan noget ?




5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
Ja din kode opretter jo kun elementet - du er også nødt til at fortælle hvor det skal placeres henne. Så vidt jeg husker er det netop appendChild() du skal bruge, fx på dit body element eller hvor du nu gerne vil have det nye element ind henne. Eksempel:

document.body.appendChild(noget);

Mvh.

Kasper (TSW)



Indlæg senest redigeret d. 27.03.2012 16:40 af Bruger #1
Ok men hvis jeg bruger document.body.appendChild(noget); så kommer det vel sidst på siden lige før </html> gætter jeg på.

Så man skal altså vide præcist hvor man vil indsætte ?

Eller kan man ikke gøre ligesom document.write() hvor det bare bliver indsat der hvor man er.

Jeg prøver og prøve mig lidt frem og ser hvad jeg kan finde ud af.



document.body.appendChild() tilføjer altid til bunden af et element...
Dvs. bruger du document.body.appendChild(child); indsætter du et child-element lige før det lukkende body-tag. Deraf navnet "append"...

Du kan også bruge document.body.insertBefore(new_node,existing_node), hvor du så kender det element du vil indsætte ved.

document.write() bruges typisk ved onload metoder - hvor du har mulighed for at manipulere med DOM, før rendering. Efter rendering oplever jeg at man skal holde sig fra document.write. :)

En del frameworks benytter (el).innerHTML fordi den typisk er hurtigere end DOM metoderne, og mere simpel. F. eks:
Fold kodeboks ind/udJScript kode 

Vs.
Fold kodeboks ind/udJScript kode 




"Problemet" med .innerHTML er bare at jeg ikke kan outputte lige der hvor koden bliver udført ligesom jeg kan med document.write.

document.write() skriver bare lige der hvor den kaldes. Man skal altså ikke til at fortælle hvor den skal indsættte teksten.

Hvis jeg skal bruge .innerHTML så skal jeg vel først lave en <div> i HTML med et id for eksempel som her :
Fold kodeboks ind/udJScript kode 


Men jeg ville da gerne undgå at skulle lave den <div> i HTML hvis jeg kan det.

Kan det lade sig gøre ?

Og jeg vil jo også gerne undgå at skulle sige "inddæt teksten her". Det skulle gerne kunne gøres ligsom med document.write() hvor den bare indsætter tekster der hvor den kaldes.

Men det kan da godt være det ikke kan lade sig gøre. Det er også nærmest mit spørgsmål OM det kan gøres mere simpelt.



t