Avatar billede mik28 Seniormester
06. maj 2008 - 15:22 Der er 12 kommentarer og
1 løsning

at undgå innerhtml

Hvorfor kan jeg ikke gøre sådan her. Det jeg gerne vil er at sætte responseText fra et ajaxkald på et div.

document.getElementById('ladida').appendChild( calindhold.responseText);

Jeg kan godt gøre således:

document.getElementById("ladida").innerHTML=calindhold.responseText;
Avatar billede w13 Novice
06. maj 2008 - 15:23 #1
Du skal bare appende teksten som document.createTextNode():

document.getElementById('ladida').appendChild(document.createTextNode(calindhold.responseText));
Avatar billede mik28 Seniormester
07. maj 2008 - 08:37 #2
Er det du siger ikke at disse to udtryk burde gøre det samme, men den sidste er den korrekte?

document.getElementById("ladida").innerHTML=calindhold.responseText;

document.getElementById("ladida").appendChild(document.createTextNode(calindhold.responseText));
Avatar billede mik28 Seniormester
07. maj 2008 - 08:54 #3
som du nok kan regne ud så virker det ikke :-(
Avatar billede w13 Novice
07. maj 2008 - 09:28 #4
Jo, den sidste er den korrekte.

Men hvis det ikke virker, så må der da komme en JavaScript-fejl eller noget?
Avatar billede w13 Novice
07. maj 2008 - 09:30 #5
Dette virker jo fint:

<html>
<head></head>
<body>

<div id="ladida"></div>

<script type="text/javascript">
var test="Hej for dig!";
document.getElementById("ladida").appendChild(document.createTextNode(test));
</script>

</body>
</html>
Avatar billede mik28 Seniormester
07. maj 2008 - 10:55 #6
Jeg har fundet problemet. Hvis jeg bruger den sidste løsning så bliver teksten bare sat ind. Hvis jeg bruger innerhtml så får jeg resultatet. responseText er noget html som skal vises som så, men det bliver vist som tekst
Avatar billede w13 Novice
07. maj 2008 - 10:56 #7
Ja, createTextNode opretter tekst og ikke HTML. Så HTML-koder vil ses som tekst.
Avatar billede w13 Novice
07. maj 2008 - 10:57 #8
Hvordan ser din HTML-kode ud? Måske kan jeg vise dig, hvordan man ville gøre det rigtigt for at undgå innerHTML.

Det kommer til at fylde lidt flere linjer, men det er den korrekte metode.
Avatar billede w13 Novice
07. maj 2008 - 10:58 #9
Altså jeg ville gerne se den HTML-kode, som du prøver at indsætte, ikke hele sidens kode. :)
Avatar billede mik28 Seniormester
07. maj 2008 - 11:20 #10
Oki. Det er bare nogle <div> og et par tabeller. Det som jeg heller ikke fatter er at det ikke havner i det <div> jeg har bedt om "ladida" det ender bare nederst på siden.
Avatar billede w13 Novice
07. maj 2008 - 11:22 #11
Altså appendChild tilføjer jo elementet nederst i "ladida", hvis der allerede er noget i.
Avatar billede roenving Novice
07. maj 2008 - 13:36 #12
-- og så vil det være ulig meget lettere, hvis du sender dine data som json eller evt. xml, specielt, hvis det er en rimelig veldefineret opbygning, du skal indsætte, det sparer nemlig serveren for rigtig lang tid til at generere html-koden !-)
Avatar billede roenving Novice
07. maj 2008 - 13:38 #13
-- mns brugerens pc står og dovner med masser af ubrugte kræfter !-)
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