Avatar billede hauge1212 Nybegynder
25. februar 2009 - 14:08 Der er 9 kommentarer og
1 løsning

document.getElementById(...), returnere null i IE7?

Jeg har et lille problem, med at mit script returnere null, når jeg forsøger at få fat i det med document.getElementById("status"). Problemet opstår kun i IE, men ikke i FF, hvorfor dette sker er mit spørgsmål? Skal mit id kaldes på en anden måde, eller er det et andet sted det er galt?

<html>
<head>
<script type="text/javascript">
var i = 0;

var http = false;


if(navigator.appName == "Microsoft Internet Explorer") {
  http = new ActiveXObject("Microsoft.XMLHTTP");
} else {
  http = new XMLHttpRequest();
}


function ajaxFunction() {
http.open("GET", "sendmail.html");
http.onreadystatechange=function() {
  if(http.readyState == 4) {
    i = i+1;
   
    document.getElementById("status").innerHTML = i;
    setTimeout('ajaxFunction()',100);
  }
}
http.send(null);

}

ajaxFunction();

</script>
</head>
<body>

<div id="status"></div>

</body>
Avatar billede hauge1212 Nybegynder
25. februar 2009 - 14:09 #1
sendmail.html gør ikke noget, der står kun "test" i den.
Avatar billede olebole Juniormester
25. februar 2009 - 14:34 #2
<ole>

Divet er jo slet ikke udskrevet til siden, når du kalder funktionen. Den sidder med andre ord og råber på én, der ikke eksisterer  ;o)

window.onload = function(){
    ajaxFunction();
}

/mvh
</bole>
Avatar billede hauge1212 Nybegynder
25. februar 2009 - 14:38 #3
Troede først at den udførte scriptet efter at sidens indhold var indlæst. Tak for svaret.
Avatar billede olebole Juniormester
25. februar 2009 - 14:39 #4
- og så tag og kik på denne langt bedre opdaterede XMLHttpRequest-wrapper:
    http://dengodekode.dk/artikler/ajax/xmlhttprequest_wrapper.php

- og brug DOM i stedet for innerHTML, som indebærer en del uhensigtsmæssigheder og aldrig har været valid i nogen standard:

    document.getElementById("status").firstChild.nodeValue = i;
    setTimeout('ajaxFunction()',5000);

- og:
    <div id="status">&nbsp;</div>

Derudover kan jeg ikke finde meningen med dit script. Hvor kommer 'i' fra - og hvad skal den gøre godt for?
Avatar billede olebole Juniormester
25. februar 2009 - 14:40 #5
At kalde serveren med et interval på 1/10 sekund er fuldstændig vanvittigt, så jeg har sat det op til hvert 5. sekund i eksemplet, hvilket er langt mere realistisk  ;o)
Avatar billede olebole Juniormester
25. februar 2009 - 14:49 #6
- og så lægger jeg lige et svar  =)
Avatar billede hauge1212 Nybegynder
25. februar 2009 - 14:49 #7
'i' er blot en tæller, som jeg ikke fik slettet.

Jeg bruger allerede en anden wrapper, men da den fyldte mere, ville jeg ikke paste den ind her. Og jeg kalder ligeledes serveren hvert femte sekund.
Undskyld hvis det forvirrede.

Jeg vil kigge på DOM i stedet, så jeg undgår fremtidige problemer.
Avatar billede olebole Juniormester
25. februar 2009 - 14:53 #8
"Jeg bruger allerede en anden wrapper" >> men næppe så godt opdateret som den, jeg linkede til. Det er den bedste, jeg har set på nettet  =)
Avatar billede olebole Juniormester
25. februar 2009 - 14:53 #9
- og tak for points  =)
Avatar billede hauge1212 Nybegynder
25. februar 2009 - 16:00 #10
Næppe så god, har du ret i. Tror jeg vil eksperimentere med den du linkede til. tak for den.
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