[英]Refresh JS script value every second
I have a script which is a getting value "average" from JSON array 我有一个脚本,它是从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>
My problem is making this <p>
refresh every some seconds. 我的问题是使此<p>
每隔几秒钟刷新一次。 I wasted all day to do this. 我整天都在浪费时间这样做。 Could you please help me with it? 你能帮我吗?
Can you do this: 你能做这个吗:
<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>
This runs your "function" every second (1000 milliseconds). 这每秒(1000毫秒)运行一次“功能”。 I advice you to throw this into another function making it more like: 我建议您将其放入另一个函数中,使其更像:
<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>
Simply use setInterval(()=>{//code }, time)
to repeat getting the JSON. 只需使用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>
A simple setInterval should do the trick. 一个简单的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>
You can use setInterval()
(which calls a function or evaluates an expression at specified intervals in milliseconds) to achieve this: 您可以使用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>
UPDATE: to fix the parse
exception we should process the response only if the request was successful . 更新:要解决parse
异常,我们仅应在请求成功时处理响应 。
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.