2016-07-20 12 views
-3

Ich habe zuerst das:setTimeout() und getElementById() funktionieren nicht zusammen

<script> 
    function result2() { 
     document.write("..."); 
    } 
    function result1() { 
     document.write(".."); 
     setTimeout(result2, 1000); 
    } 
    document.write("."); 
    setTimeout(result1, 1000); 
</script> 
<div id="body"></div> 

setTimeout() nicht auf allen neunundneunzig Mal von hundert nicht funktioniert, so dass ich war überrascht, sie zu sehen Arbeiten, auch wenn es am Ende durchbrach. Aber es hat nicht funktioniert, wie ich will verwendet, so dass ich wieder schrieb das Drehbuch nur ein wenig, so etwas zu sein:

<script> 
    function result2() { 
     document.getElementById("body").innerHTML = "..."; 
    } 
    function result1() { 
     document.getElementById("body").innerHTML = ".."; 
     setTimeout(result2, 1000); 
    } 
    document.getElementById("body").innerHTML = "."; 
    setTimeout(result1, 1000); 
</script> 
<div id="body"></div> 

aber nichts passiert, es gab mir nur eine leere Seite. .. also habe ich versucht setInterval(), aber auch hier hat es nicht funktioniert. Also bitte, hilf mir, wie kann ich dieses Problem lösen?

+2

Jedes Intervall Sie ein anderes Intervall erstellen arbeiten .... Sie haben keine Timeout wie Ihr Titel sagt, Sie tun .... Und Sie sollte nicht nach dem Laden der Seite document.write verwenden! – epascarello

+0

Siehe auch http://stackoverflow.com/questions/9916747/why-is-document-body-null-in-my-javascript?noredirect=1&lq=1 – gcampbell

+0

epascarello: Ich wusste nicht, sorry, ich bin nur Anfänger! – bexandre

Antwort

2

Das Problem ist, wenn der Code ausgeführt wird, sind die Elemente nicht im DOM verfügbar. Sie können

  1. Bewegen Sie die <script> am Ende <body so, einer der folgenden Lösung verwenden, wenn der Code ausgeführt wird, wird die Elemente in dem DOM
  2. Wickeln Sie den Code zur Verfügung, die DOM-Elemente zuzugreifen in DOMContentLoaded Ereignisrückruf

<script> 
 
    function result2() { 
 
     document.getElementById("body").innerHTML = "..."; 
 
    } 
 

 
    function result1() { 
 
     document.getElementById("body").innerHTML = ".."; 
 
     setInterval(result2, 1000); 
 
    } 
 

 
    document.addEventListener('DOMContentLoaded', function() { 
 
     document.getElementById("body").innerHTML = "."; 
 
     setInterval(result1, 1000); 
 
    }); 
 

 
</script> 
 
<div id="body"></div>

0

Fügen Sie Ihre scrip t am Ende des Body-Tag, und es sollte

function result2() { 
 
    document.getElementById("body").innerHTML = "..."; 
 
    } 
 

 
function result1() { 
 
    document.getElementById("body").innerHTML = ".."; 
 
     setInterval(result2, 1000); 
 
    } 
 

 
document.getElementById("body").innerHTML = "."; 
 
    setInterval(result1, 1000);
<div id="body"></div>

Verwandte Themen