`

jquery实例4:动态显示股票信息

阅读更多
这个实例主要涉及的知识点为:

1. 完成后台模拟股票涨跌的功能

2. 将股票信息组装成JSON格式

3. 用红绿色实时显示股票价格的涨跌

4. 用Tooltip窗口显示股票详细信息



程序的目录结构如下:




1.后台部分

(1)Stock.java源代码:
package bean;
/**
 * 用于保存股票的基本信息
 * @author 大鹏
 */
public class Stock {
	
	/**
	 * 昨天的收盘价
	 */
	private double yesterday;
	
	/**
	 * 开盘价
	 */
	private double today;
	
	/**
	 * 当前价
	 */
	private double now;
	
	/**
	 * 股票名称
	 */
	private String name;
	
	/**
	 * 股票代码
	 */
	private String id;
	
	public Stock(double yesterday, double today, String name, String id) {
		this.yesterday = yesterday;
		this.today = today;
		this.name = name;
		this.id = id;
		this.now = today;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getNow() {
		return now;
	}

	public void setNow(double now) {
		this.now = now;
	}

	public double getToday() {
		return today;
	}

	public void setToday(double today) {
		this.today = today;
	}

	public double getYesterday() {
		return yesterday;
	}

	public void setYesterday(double yesterday) {
		this.yesterday = yesterday;
	}
	
	@Override
	public String toString() {
		return name + ":" + now;
	}

}


(2)GetStockInfoServlet.java源代码:
package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bean.Stock;

public class GetStockInfoServlet extends HttpServlet {

	private HashMap<String, Stock> stocks;

	@Override
	public void init(ServletConfig config) throws ServletException {
		stocks = new HashMap<String, Stock>();
		Stock stock1 = new Stock(3000.0, 2990.0, "上证指数", "300001");
		Stock stock2 = new Stock(23.32, 22.10, "浦发银行", "000001");
		stocks.put(stock1.getId(), stock1);
		stocks.put(stock2.getId(), stock2);
		System.out.println(stocks);
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 返回两支股票的信息
		// 1.计算随机数
		// ran1介于-20和20之间
		double ran1 = Math.random() * 40 - 20;
		// ran2介于-0.5和0.5之间
		double ran2 = Math.random() - 0.5;

		// 2.将随机数和股票的当前价格进行加或减的操作,得到新的当前价格
		Stock stock1 = stocks.get("300001");
		Stock stock2 = stocks.get("000001");

		double temp;
		temp = stock1.getNow() + ran1;
		// 需要对新的当前价格进行截取,只保留小数点后两位
		temp = (int) (temp * 100) / 100.0;
		stock1.setNow(temp);

		temp = stock2.getNow() + ran2;
		temp = (int) (temp * 100) / 100.00;
		stock2.setNow(temp);

		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		//out.print(stock1 + "<br>" + stock2 + "<br>");
		// 3.返回两支股票的昨天收益,今天开盘和当前价格
		// 采用json的数据格式返回股票的信息
		StringBuilder builder = new StringBuilder();
		//采用数组的方式回传两个股票对象
		/*builder.append("[{name:\"").append(stock1.getName()).append("\",id:\"")
		 .append(stock1.getId()).append("\",yes:")
		 .append(stock1.getYesterday()).append(",tod:")
		 .append(stock1.getToday()).append(",now:")
		 .append(stock1.getNow())
		 .append("},")
		 .append("{name:\"").append(stock2.getName()).append("\",id:\"")
		 .append(stock2.getId()).append("\",yes:")
		 .append(stock2.getYesterday()).append(",tod:")
		 .append(stock2.getToday()).append(",now:")
		 .append(stock2.getNow()).append("")
		 .append("}]");*/
		//采用对象的方式回传两个股票对象
		//如果回传表示对象的json,需要在最外层加上一个括号,否则页面解析会出错
		builder.append("({\"").append(stock1.getId()).append("\":{name:\"")
				.append(stock1.getName()).append("\",id:\"")
				.append(stock1.getId()).append("\",yes:")
				.append(stock1.getYesterday()).append(",tod:")
				.append(stock1.getToday()).append(",now:")
				.append(stock1.getNow())
				.append("},\"")
				.append(stock2.getId()).append("\":{name:\"")
				.append(stock2.getName()).append("\",id:\"")
				.append(stock2.getId()).append("\",yes:")
				.append(stock2.getYesterday()).append(",tod:")
				.append(stock2.getToday()).append(",now:")
				.append(stock2.getNow()).append("}})");
		out.print(builder.toString());
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		this.doGet(request, response);
	}

}


2.客户端代码

(1)JQueryStock.html源代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
		<script type="text/javascript" src="js/jquerystock.js"></script>
		<title>jquery实例4:动态显示股票信息</title>
	</head>

	<body>
		<div id="300001"><a href="#">上证指数:</a><span></span></div>
		<div id="000001"><a href="#">浦发银行:</a><span></span></div>
		<div id="stock">
			<div id="yes">昨收:<span></span></div>
			<div id="tod">今开:<span></span></div>
			<div id="now">当前:<span></span></div>
		</div>
	</body>
</html>


2.jquerystock.js源代码:
//期待进入页面后就可以开始从服务器段获取数据,然后显示股票价格
var obj;
var sid;
$(document).ready(function() {
	//页面载入时隐藏弹出框
	var stockNode = $("#stock").css("border", "1px solid black")
			.width("150px").css("position", "absolute")
			.css("z-index", "99")
			.css("background-color", "pink")
			.css("color", "blue");
	stockNode.hide();
	var as = $("a");
	//定义鼠标进入股票名称时的操作
	as.mouseover(function(event) {
		//获取到当前股票的代码
		var aNode = $(this);
		var divNode = aNode.parent();
		sid = divNode.attr("id");

		updatediv();
		//需要控制弹出框的位置
		//期待出现在鼠标的右下方
		var myEvent = event || window.event;
		stockNode.css("left", myEvent.clientX + 5 + "px").css("top", myEvent.clientY + 5 + "px");
		//弹出框显示	
		stockNode.show();
	});
	as.mouseout(function() {
		stockNode.hide();
	});
	getInfo();
	//3.每隔一秒钟和服务器交互一次,用户不用刷新页面就可以不断地看到最新的股票信息
	setInterval(getInfo, 1000);
});

function getInfo() {
	//清除缓存
	var t = (new Date()).getTime()
	//1.向服务器发起请求,获取数据
	$.get("GetStockInfoServlet?t=" + t, null, function(data) {
		//2.接收并解析数据
		//var obj = eval(data);
		//在get方法中如果加上"json"后就data就直接是json的对象了
		obj = data;
		//2.1获取两只股票的当前指数信息
		var stock1 = obj["300001"];
		var stock2 = obj["000001"];
		span3 = $("#300001").children("span");
		span3.html(stock1.now);
		if (stock1.now > stock1.yes) {
			//当前价格大于昨天收盘,则显示红色
			span3.css("color", "red");
		} else {
			span3.css("color", "green");
		}
		var span1 = $("#000001").children("span");
		span1.html(stock2.now);
		if (stock2.now > stock2.yes) {
			//当前价格大于昨天收盘,则显示红色
			span1.css("color", "red");
		} else {
			span1.css("color", "green");
		}
		updatediv();
	}, "json");
}

//更新弹出框中的内容
function updatediv() {
	//找到对应的股票对象
	var stockobj = obj[sid];
	//遍历一个js的对象
	for (var proname in stockobj) {
		if (proname != "name") {
			$("#" + proname).children("span").html(stockobj[proname]);
		}
	} 
}


好了,代码完成,现在看看效果图吧



  • 大小: 7.2 KB
  • 大小: 12.6 KB
分享到:
评论

相关推荐

    AJAX学习总结(八)---Jquery实例:动态股票价格

    在本篇“AJAX学习总结(八)---Jquery实例:动态股票价格”中,我们将深入探讨如何使用jQuery库来实现AJAX技术,以便实时更新网页上的股票价格信息。AJAX,即异步JavaScript和XML,是一种在无需刷新整个页面的情况下...

    jquery实例1:淡入淡出窗口

    本文将详细解析"jquery实例1:淡入淡出窗口"这一主题,帮助你理解如何使用jQuery实现网页元素的动态效果,如淡入淡出。 首先,淡入淡出效果是jQuery动画功能的一个经典应用,它使得网页元素可以平滑地从不可见变为...

    jquery实例5:仿Google Suggest自动补齐

    **jQuery 实例5:仿 Google Suggest 自动补全** 在网页开发中,提供自动补全功能能够极大地提升用户体验,尤其是在搜索或者输入框输入时。Google 的搜索建议就是这一功能的经典应用,它能够根据用户输入的关键词...

    jQuery入门实例:使用jQuery编写简单的类tooltip的小插件

    标题中的“jQuery入门实例:使用jQuery编写简单的类tooltip的小插件”表明了本文将介绍如何使用jQuery这个流行的JavaScript库来创建一个类似tooltip的功能。jQuery是一个轻量级的库,它简化了HTML文档遍历、事件处理...

    jQuery实例_ ToolTip的实现

    总结一下,这个jQuery实例展示了如何利用JavaScript和CSS创建自定义的Tooltip效果。通过监听元素的鼠标悬停事件,动态创建并定位Tooltip元素,实现了更灵活和可定制的用户体验。这只是一个基础示例,实际应用中可以...

    jquery实例大全

    **jQuery实例大全** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。这个“jQuery实例大全”集合了众多实用的jQuery特效和功能,旨在帮助开发者快速理解和应用jQuery...

    Jquery 实例:Ajax级联下拉框效果

    这是一个利用了Ajax技术的一个Jquery实例,动态的生成级联的下拉列表框,在中关村zol中经常可以看到。如果遇到无法显示的情况,请自己阅读代码。

    Jquery 实例:标签页效果

    本实例将深入探讨如何使用jQuery库来实现动态、响应式的标签页功能,这在各大论坛和网站中广泛应用。jQuery,作为一款强大的JavaScript库,简化了DOM操作,事件处理以及动画效果,使得创建这样的功能变得轻而易举。 ...

    Jquery实例:横向纵向菜单

    然后,我们可以编写JavaScript代码,这部分是Jquery实例的核心。通过Jquery的选择器,我们可以找到页面上的菜单元素,并应用相应的操作。例如,使用`$("#menu")`选择ID为"menu"的元素,`$(".submenu")`选择所有class...

    jQuery实例大全

    《jQuery实例大全》 在网页开发中,jQuery是一款极为重要的JavaScript库,它简化了JavaScript的DOM操作、事件处理、动画设计以及Ajax交互。本资源集合,"jQuery实例大全",正是针对这一强大工具的实践应用展示,...

    jQuery实现的动态伸缩导航菜单实例

    在介绍jQuery实现的动态伸缩导航菜单实例中,我们首先需要了解jQuery这个前端开发常用的JavaScript库。jQuery极大的简化了JavaScript编程,尤其在处理文档结构、事件处理、动画效果以及Ajax交互等方面提供了简便的...

    Jquery实例:提示信息渐入渐出的窗口

    在本文中,我们将深入探讨如何使用jQuery实现一个提示信息渐入渐出的窗口效果。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务。通过利用jQuery提供的API,我们可以轻松...

    jquery实例集合

    《jQuery实例集合——深入浅出jQuery编程》 jQuery,这个小巧而强大的JavaScript库,自2006年发布以来,已经成为了Web开发中不可或缺的一部分。它以其简洁的API、丰富的功能以及良好的浏览器兼容性,极大地简化了...

    jquery经典实例60例-动画实例

    《jQuery经典实例60例-动画实例》是学习jQuery库中动画效果的宝贵资源,它涵盖了从基础到高级的各种动画技巧。jQuery库以其简洁、强大的API而闻名,尤其是在处理页面元素的动态展示和动画效果方面。以下将详细介绍...

    jQuery实例(菜单、滚动、层隐藏等)

    本文将详细解析"jQuery实例(菜单、滚动、层隐藏等)"的相关知识点,帮助你深入理解并应用这些功能。 首先,我们来看菜单的实现。在网页设计中,菜单是用户导航的重要组成部分。jQuery提供了方便的方法来创建动态和...

    jquery代码实例 锋利的jquery

    《锋利的jQuery》代码实例详解 jQuery是一个广泛应用于Web前端开发的JavaScript库,它以其简洁、高效的特点深受开发者喜爱。本教程通过一系列代码实例,旨在帮助初学者快速理解和掌握jQuery的核心概念与实用技巧。 ...

    jQuery实例源码

    **jQuery实例源码详解** jQuery,作为一款广泛应用于Web开发的JavaScript库,以其简洁的API、强大的选择器和丰富的插件系统,极大地提高了前端开发效率。"锋利的jQuery实例源码"是一份集合了各种实用jQuery技巧和...

    jQuery扫码:手机号码登录框切换代码.zip

    6. **错误提示**:在用户输入不正确或登录失败时,使用jQuery可以方便地更新DOM元素,显示错误信息。例如,可以使用`.html()`或`.text()`方法改变提示文本,`.addClass()`和`.removeClass()`来切换样式,显示红色...

    JQuery的使用——实例讲解

    在IT领域,jQuery是一个非常流行的JavaScript库,它极大地简化了JavaScript的使用,使得网页动态化和DOM操作变得简单易行。本篇文章将深入探讨jQuery的使用,并通过一系列实例来帮助理解其核心概念和功能。 首先,...

Global site tag (gtag.js) - Google Analytics