我有一个获得价值的脚本"平均值"来自JSON数组
<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>
我的问题是每隔几秒钟刷新一次<p>
。我浪费了一整天才能做到这一点。你能帮帮我吗?
答案 0 :(得分:0)
你能做到这一点:
<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>
每秒运行一次“功能”(1000毫秒)。我建议你把它扔进另一个函数,使其更像:
<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>
答案 1 :(得分:0)
只需使用setInterval(()=>{//code }, time)
重复获取JSON。
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>
答案 2 :(得分:0)
一个简单的setInterval应该可以解决问题。
<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>
答案 3 :(得分:0)
您可以使用setInterval()
(以指定的时间间隔(以毫秒为单位)调用函数或计算表达式)来实现此目的:
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>
更新以修复我们应process the response only if the request was successful的parse
例外情况。
答案 4 :(得分:-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>