0

我正在尝试创建一个显示股票报价的窗格,但它每 10 秒自动刷新一次并且系统地发生变化(所以说 goog 十,然后 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>

所以它应该首先获取股票符号,看到它为空并获取第一个股票报价,然后在 15 秒后获取该股票报价并返回下一个,依此类推。

stock.php 页面运行良好,但没有显示任何内容。我是否正确启动了这个?我应该让第一个节目然后设置 setInterval 吗?

请注意,h3 标记是故意为空的,并且在 stock.php 中进行了说明,所以不要担心它是空的

非常感谢。尼尔

4

1 回答 1

3

你应该更换

setInterval(stocksUpdate(symbol), 15);

setInterval(function(){
    stocksUpdate(symbol);
}, 15);

到目前为止,您正在评估函数stockUpdate(symbol),然后再将其传递给setInterval。

此外,15 是以毫秒为单位的时间,如果您不希望服务器内爆,请考虑将其提高到更大的值,并且可能不使用 setInterval(这可能导致 2 个响应以错误的顺序到达)在stockUpdate 函数结束

于 2012-06-17T14:09:40.527 回答