2017-06-10 3 views
0

Ich habe ein DIV, das schließlich von einem XMLHttpRequest geladen wird. in diesem neu geladenen div sollte Updates sein (falls vorhanden)Javascript: Aktualisierung DOM-Element, das von XMLHttpRequest geladen wurde

scheint nicht zu funktionieren. Wenn ich diese Prüfung an einem Element durchführe, das von einer früheren XMLHttpRequest if (document.getElementById('newdiv') !== null) eingefügt wird, gibt NULL zurück und die Antwort wird nicht eingefügt. Wenn ich dies für ein Element mache, das sich beim Laden der Seite im DOM befindet, funktioniert es.

Wie kann ich einen Wert eines Elements aktualisieren, das nach dem Laden der Seite (möglicherweise) geladen wurde?

Bitte keine jquery, javascript nur bearbeiten

<body> 
    <button onclick="f1()"> 
    <input onchange="f2(this.value)"/> 
    <div id="parent"></div> 
</body>  
<script> 
function f1() { 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) {    
     if (xhr.status == 200 && xhr.status < 300) 
     console.log(xhr.responseText); 
     console.log(document.getElementById('parent')); 
     if (document.getElementById('parent') !== null) { 
      document.getElementById('parent').innerHTML= xhr.responseText; 
     } 
    } 

    postvars = somestuff; 
    xhr.open("POST", "req.py", true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xhr.overrideMimeType("application/text"); 
    xhr.send(postvars); 
    } 



function f2(val) { 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) {     
     if (xhr.status == 200 && xhr.status < 300) 
     console.log(xhr.responseText); 
     console.log(document.getElementById('newdiv')); 
     if (document.getElementById('newdiv') !== null) { 
      document.getElementById('newdiv').innerHTML= xhr.responseText; 
     } 
    }  

    } 
    postvars = val; 
    xhr.open("POST", "req.py", true); 
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xhr.overrideMimeType("application/text"); 
    xhr.send(postvars); 
    }} 
</script> 

die xhr.responseText für f1 wird zu klären, wie

<div id="newdiv"></div> 

die xhr.responseText für f2 wie

sein
fancy text 
+0

Wie fügen Sie '# newdiv' in das DOM ein? Was erzeugt 'console.log (document.getElementById ('newdiv'));' genau? – Xufox

+0

Ich füge mit Laden ein XMLHttpRequest innerHTML = xhr.responseText; zum Elternteil von newdiv –

+0

Kannst du den Code redigieren, den du in der Frage verwendest? Ich sehe immer noch nicht, wie dies das '# newdiv' erzeugt, in das du die Antwort einfügst. – Xufox

Antwort

0

entfernen t Hat! = null Bedingung, so dass jede Anfrage neue Daten anzeigt

+0

Warum hilft das Entfernen von '! == null'? Wann gibt 'document.getElementById' etwas anderes als 'null' zurück, wenn das Element nicht existiert? – Xufox

+0

ich bekomme nicht, was genau Sie suchen? Möchten Sie diese Funktion beim Laden Ihrer Seite mit JavaScript ausführen? –

+1

Ich möchte nur, dass Sie erklären, warum Sie 'document.getElementById ('newdiv')' und 'document.getElementById ('newdiv')! == null ', als Bedingungen, nicht gleichwertig sind, da Sie das sagen das Entfernen von '! == null' wird helfen, was bedeutet, dass sie nicht gleichwertig sind. Der Code verwendet 'xhr.responseText', das kann nicht beim Laden der Seite sein, sondern innerhalb eines XHR-Callbacks. – Xufox

Verwandte Themen