functioncallBackFunction(){
if(httpRequest.readyState==4){
if(httpRequest.status==200){
//得到服务器端返回的JSON数据
json=eval(httpRequest.responseText);
//更新详细框的数据,当鼠标移动到超链接上才确定有id,于是判断有没有id
if(sid){
update();
}
//遍历出每个JSON对象【也就是json的id】
for(varidinjson){
//得到每个stock对象
varstock=json[id];
//将当前的价格设置到span节点里面
document.getElementById(id).innerHTML=stock.current;
//比较当前价格和昨天开盘价格,如果大于就是红色,小于就是绿色
if(stock.current>stock.yesterday){
document.getElementById(id).style.color='red';
}else{
document.getElementById(id).style.color='green';
}
}
}
}
}
functionshowTool(node){
//得到鼠标移动到具体股票的id
sid=node.parentNode.getElementsByTagName("span")[0].id;
//把详细框框显示出来
document.getElementById("toolTip").style.display='block';
}
functionclearTool(){
document.getElementById("toolTip").style.display='none';
}
最终效果:
总结要点
①:这是由AJAX来实现的,因为它无刷新的动态交互数据。
②:服务器端应该保存着股票的基本信息。于是乎,我们用一个类来装载着这些信息【信息之间的关系就不一一说明了,因为每个案例用的可能都不一样】
③:用到了DecimalFormat类来格式化小数变为自己想要的格式
④:使用HashMap来装载这些股票,使用Map集合主要是在客户端中,可以通过键来访问具体的股票,只要能访问到股票了,那么一切就好说了。
⑤:当然啦,装载股票的任务就交给init()方法,因为只需要装载一次。
⑥:我们会发现,股票的信息是不断会变化的,所以我们使用定时器和Random类来不断修改股票的信息
⑦:JavaScript和服务端交互使用AJAX,要么使用XML,要么就是JSON,这次我们采用的是JSON
⑧:JavaScript使用XMLHttpRequest对象得到Servlet返回给浏览器的JSON数据,解析JSON数据,变成是JavaScript对象
⑨:在页面上显示服务端带过来的数据,一般都是使用div来显示【块级】,用控件绑定id,在JavaScript中得到控件,填充数据。这样就是动态地修改页面的数据了。
⑩:浏览器想要不断地从服务端获取股票的数据,那么就需要不断地与服务端交互,解析JSON,填充数据.....这种我们可以通过setInterval()定时器来做
①①:想要修改字体的颜色,只要获取它的控件再style.color就可以修改了。
①②:鼠标移动到具体的股票链接的时候,会出现股票的详细信息时,这明显就是为超链接绑定了事件
①③:股票的详细信息用一个框框装载着,那么我们就在css中初始化这个框框,它平时是不显示出来的,只用在鼠标移到它那里的时候才显示,我们把display=“none”就行了。
①④:在响应事件的时候,我们需要知道用户是移动到哪一个超链接上,所以要获取得到具体的超链接id。知道id以后,我们就知道用户想要知道的股票是哪一个了。
①⑤:股票的信息也想要及时的更新,那么我们想把它抽取成一个方法,在AJAX回调方法中加入进去就行了。当然了,id和具体股票对象应该是全局的变量【这样才能够在别的方法中用到】