我正在尝试创建一个显示股票报价的窗格,但是会每10秒自动刷新并且系统地更改(因此请说goog为10,然后是aapl等等。)
这就是我得到的。
function stocksUpdate(latest){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("stocks").innerHTML=xmlhttp.responseText;
}
}
xmlHttp.open("GET","stock.php?latest="+latest+"&x="+Math.random(),true);
xmlHttp.send();
}
function stockShow() {
var symbol = document.getElementById('stocksymbol');
setInterval(stocksUpdate(symbol), 15);
}
}
然后
<body onload="stockShow()">
<div id="stocks">
<h3 id="stocksymbol"></h3>
所以它首先应该获得stocksymbol,看到它是空的并获得第一个股票报价,然后15秒后获得该股票报价并返回下一个等等。
stock.php页面工作正常,但没有显示。我正确地开始这个吗?我应该制作第一个节目然后设置setInterval ??
请注意,h3标签是故意为空的并且在stock.php中占用,所以不要担心它是空的
非常感谢。 尼尔
答案 0 :(得分:3)
你应该替换
setInterval(stocksUpdate(symbol), 15);
与
setInterval(function(){
stocksUpdate(symbol);
}, 15);
截至目前,您正在评估函数stocksUpdate(symbol),然后再将其传递给setInterval。
此外,15是以毫秒为单位的时间,如果您不希望服务器崩溃,请考虑将其提升到更高的值,而不是使用setInterval(这可能导致2个响应以错误的顺序到达)使用stockUpdate函数结束时的setTimeout