2017-06-15 3 views
0

Ich habe ein Skript, das einen Gegenwert „durchschnittlich“ von JSON-Array alle paar SekundenRefresh JS Skript Wert jedes zweite

<p id="ticker"></p> 


<script> 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
    myObj = JSON.parse(this.responseText); 
    document.getElementById("ticker").innerHTML = myObj.average; }; 
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true); 
    xmlhttp.send(); 
</script> 

Mein Problem macht dieses <p> refresh ist. Ich habe den ganzen Tag dafür verschwendet. Könnten Sie mir bitte dabei helfen?

+0

setIntervar (Funktionsname, timeInMilliseconds). Schreiben Sie diese Funktion in setInterval. –

+0

Könnten Sie einfach das gesamte Skript in eine 'setInterval (function() {// SCRIPT}, 1000);)? * (1000 = 1 Sekunde. Ändern Sie nach Bedarf.) * – Santi

+0

@blr, siehe [meine aktualisierte Antwort] (https://Stackoverflow.com/a/44570752/4222181), um herauszufinden, wie Sie Parse loswerden können Ausnahme. –

Antwort

0

Können Sie dies tun:

<script> 
window.setInterval(function(){ 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
    myObj = JSON.parse(this.responseText); 
    document.getElementById("ticker").innerHTML = myObj.average; }; 
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true); 
    xmlhttp.send(); 
}, 1000); 
</script> 

Dies läuft Ihre "Funktion" jede Sekunde (1000 Millisekunden). Ich rate Ihnen, diese in eine andere Funktion zu werfen es mehr wie machen:

<script> 
window.setInterval(updateTicker(), 1000); 

function updateTicker(){ 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     myObj = JSON.parse(this.responseText); 
     document.getElementById("ticker").innerHTML = myObj.average; 
    }; 
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true); 
    xmlhttp.send(); 
} 
</script> 
-2
<p>Click the button to wait 3 seconds, then alert "Hello".</p> 
<p id="text">After clicking text will change here and count starts for every 0.5 seconds. This goes on forever...</p> 
<button onclick="myFunction()">Try it</button> 

<script> 
var i=0; 
function myFunction() { 

    setInterval(function(){ document.getElementById('text').innerHTML = i++; }, 500); 
} 
</script> 

</body> 
</html> 
+1

Wenn Sie nur Beispiele zeigen, erklären Sie zumindest, was Teil was macht – Luca

+0

@LucaKiebel Ich habe einen Kommentar zu dieser Frage hinzugefügt. Ich denke, Sie haben das nicht gesehen. –

+0

dann solltest du dich wenigstens selbst zitieren. – Luca

0

einfach setInterval(()=>{//code }, time) verwenden, um wiederholen Sie die JSON bekommen.

setInterval(getAvg, 5*1000); // every 5 seconds 
 

 
function getAvg() { 
 
    var xmlhttp = new XMLHttpRequest(); 
 
    xmlhttp.onreadystatechange = function() { 
 
    myObj = JSON.parse(this.responseText); 
 
    document.getElementById("ticker").innerHTML = myObj.average; 
 
    }; 
 
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true); 
 
    xmlhttp.send(); 
 
}
<p id="ticker"></p>

+0

@Santi richtig, danke :) – Luca

0

Ein einfaches setInterval sollte es tun.

<p id="ticker"></p> 

<script> 
    var ticker = document.getElementById("ticker"); // Cache that (faster) 

    function updateP(){ 
    //... Do whatever 
    ticker.innerHTML = "..." 
    } 

    updateP(); // Update once immediately... 
    setInterval(updateP, 3000) // ...and then again every 3000ms 
</script> 
0

können Sie verwenden setInterval() (die eine Funktion aufruft oder wertet einen Ausdruck in bestimmten Abständen in Millisekunden), dies zu erreichen:

function getValue(){ 
 
    var xmlhttp = new XMLHttpRequest(); 
 
    xmlhttp.onreadystatechange = function() { 
 
    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
 
     var myObj = JSON.parse(this.responseText); 
 
     document.getElementById("ticker").innerHTML = myObj.average; 
 
    } 
 
    }; 
 
    xmlhttp.open("GET", "https://bitbay.net/API/Public/BTC/ticker.json", true); 
 
    xmlhttp.send(); 
 
} 
 

 
setInterval(getValue, 1000);
<p id="ticker"></p>

UPDATE: beheben die parse Ausnahme sollten wir process the response only if the request was successful.