`

Ajax创建工具提示

    博客分类:
  • AJAX
阅读更多

文件一览

  • toolTip.html
  • ProgressBarServlet.java

toolTip.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax Tool Tip</title>
<script type="text/javascript">
var xmlHttp;
var dataDiv;
var dataTable;
var dataTableBody;
var offsetE1;

function createXMLHttpRequest() {
	if (window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function initVars() {
	dataTableBody = document.getElementById("courseDataBody");
	dataTable = document.getElementById("courseData");
	dataDiv = document.getElementById("popup");
}

function getCourseData(element) {
	initVars();
	createXMLHttpRequest();
	offsetE1 = element;
	var url = "ToolTipServlet?key=" + escape(element.id);
	
	xmlHttp.open("GET",url,true);
	xmlHttp.onreadystatechange = callback;
	xmlHttp.send(null);
}

function callback() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			setData(xmlHttp.responseXML);
		}
	}
}

function setData(courseData) {
	clearData();
	setOffsets();
	var length = courseData.getElementsByTagName("length")[0].firstChild.data;
	var par = courseData.getElementsByTagName("par")[0].firstChild.data;
	var row, row2;
	var parData = "Par: " + par;
	var lengthData = "Length: " + length;
	row = createRow(parData);
	row2 = createRow(lengthData);
	dataTableBody.appendChild(row);
	dataTableBody.appendChild(row2);
}

function createRow(data) {
	var row,cell,txtNode;
	row = document.createElement("tr");
	cell = document.createElement("td");
	cell.setAttribute("bgcolor","#FFFAFA");
	cell.setAttribute("border","0");
	txtNode = document.createTextNode(data);
	cell.appendChild(txtNode);
	row.appendChild(cell);
	return row;
}

function setOffsets() {
	var end = offsetE1.offsetWidth;
	var top = calculateOffsetTop(offsetE1);
	dataDiv.style.border = "black 1px solid";
	dataDiv.style.left = end + 15 + "px";
	dataDiv.style.top = top + "px";
}

function calculateOffsetTop(field) {
    //offsetTop:相对于父容器的top
	return calculateOffset(field,"offsetTop");
}

function calculateOffset(field, attr) {
	var offset = 0;
	while(field) {
		offset += field[attr];
		field = field.offsetParent;
	}
       return offset;
}

function clearData() {
	var ind = dataTableBody.childNodes.length;
	for (var i=ind-1;i>=0;i--) {
		dataTableBody.removeChild(dataTableBody.childNodes[i]);
	}
	//把border设为"none"即没有,浏览器解析"none"时将不作出渲染动作,即不会消耗内存值
	//把border设为"0"像素虽然在页面上看不见,但按border默认值理解,
	//浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。
	dataDiv.style.border = "none";
}

</script>
</head>
<body>
<h1>Ajax Tool Tip Example</h1>
<h3>Golf Courses</h3>
<table id="courses" bgcolor="#FFFAFA" border="1" cellspacing="0" cellpadding="2">
	<tbody>
		<tr><td id="1" onmouseover="getCourseData(this);" onmouseout="clearData();">Augusta National</td></tr>
		<tr><td id="2" onmouseover="getCourseData(this);" onmouseout="clearData();">Pinehurse No.2</td></tr>
		<tr><td id="3" onmouseover="getCourseData(this);" onmouseout="clearData();">St.Andrews Links</td></tr>
		<tr><td id="4" onmouseover="getCourseData(this);" onmouseout="clearData();">Baltusrol Golf Club</td></tr>
	</tbody>
</table>
<div id="popup" style="position:absolute">
	<table id="courseData" bgcolor="#FFFAFA" border="0" cellspacing="2" cellpadding="2">
		<tbody id="courseDataBody"></tbody>
	</table>
</div>
</body>
</html>

 

ProgressBarServlet.java

 

package ajaxbook.chap4;

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

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

public class ToolTipServlet extends HttpServlet {
	
	private Map courses = new HashMap();

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		Integer key = Integer.valueOf(req.getParameter("key"));
		CourseData data = (CourseData)courses.get(key);
		PrintWriter out = resp.getWriter();
		resp.setContentType("text/xml");
		resp.setHeader("Cache-Control", "no-cache");
		out.println("<response>");
		out.println("<par>"+data.getPar()+"</par>");
		out.println("<length>"+data.getLength()+"</length>");
		out.println("</response>");
		out.close();
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		CourseData augusta = new CourseData(72, 7290);
		CourseData pinehurst = new CourseData(70, 7214);
		CourseData standrews = new CourseData(72, 6566);
		CourseData baltusrol = new CourseData(70, 7392);
		courses.put(new Integer(1), augusta);
		courses.put(new Integer(2), pinehurst);
		courses.put(new Integer(3), standrews);
		courses.put(new Integer(4), baltusrol);
	}
	
	private class CourseData {
		private int par;
		private int length;
		public CourseData(int par, int length) {
			this.par = par;
			this.length = length;
		}
		public int getPar() {
			return this.par;
		}
		public int getLength() {
			return this.length;
		}
	}
	
}
  • 大小: 16.9 KB
分享到:
评论

相关推荐

    Ajax基础教程(扫描版)

    4.6 创建工具提示 95 4.7 动态更新web页面 101 4.8 访问web服务 110 4.9 提供自动完成 116 4.10 小结 123 第5章 构建完备的ajax开发工具箱 125 5.1 使用jsdoc建立javascript代码的文档 125 5.1.1 安装 126 ...

    Ajax与PHP基础教程随书源码

    《Ajax与PHP基础教程》内容完备,不仅讲述了一般会遇到的日常Web应用程序开发任务,如验证表单、文件上传、自动完成、工具提示、图片上传和显示等,完整演示了最常见也最实用的数据库驱动应用、Web服务、Google Maps...

    《Ajax与PHP基础教程》PDF

    《Ajax与PHP基础教程》内容完备,不仅讲述了一般会遇到的日常Web应用程序开发任务,如验证表单、文件上传、自动完成、工具提示、图片上传和显示等,完整演示了最常见也最实用的数据库驱动应用、Web服务、Google Maps...

    【卷一/共两卷】AJAX实战pdf高清版90M

    第13章 使用Ajax创建独立的应用 13.1 从外部读取信息 13.1.1 查找XML提要 13.1.2 RSS结构 13.2 创建丰富的用户界面 13.2.1 流程 13.2.2 不使用表格的HTML框架 13.2.3 采用CSS方法排版 13.3 加载RSS提要 13.3.1 全局...

    PHP+Ajax网站开发典型实例

    实例 55创建工具提示 实例 56读取响应首部 实例 57动态加载列表框 实例 58显示进度条 实例 59数据无刷新写入文本文件 实例60 提供自动完成 实例61 实现级联菜单的设计 实例62 PHP+Ajax树状菜单 第8章 Ajax...

    Glimmer jQuery 可视化设计工具C#源代码

    它向我们提供了工具提示条(Tooltip)、图片切换(sequence)、下拉菜单(dropdown)三种效果的创建向导,你只需要设置一些参数就可以生成相关的html、css、jquery代码。当然这里不是Glimmer的程序,而是Glimmer的源...

    ExtJS(ajax框架) 4.2.1

    再加上可编辑grid,添加新行,删除一或多行,提示多行数据,拖拽改变grid大小,grid之间拖拽一或多行,甚至可以在tree和grid之间进行拖拽,这些功能实在太神奇了。更令人惊叹的是,这些功能竟然都在ext表格控件里...

    jsPanel:一个jQuery插件,用于创建高度可配置的浮动面板,模式,工具提示和提示通知程序,以在后端解决方案和其他Web应用程序中使用

    jsPanel可用作浮动,可拖动和可调整大小的面板,模式,工具提示甚至提示。 配置选项包括用于页眉和/或页脚部分的其他工具栏,从右到左文本方向的支持,内置的引导程序支持,13个主题等等。 各种选项允许以灵活的...

    Glimmer jQuery 可视化设计工具C#源代码(vs2005)

    它向我们提供了工具提示条(Tooltip)、图片切换(sequence)、下拉菜单(dropdown)三种效果的创建向导, 你只需要设置一些参数就可以生成相关的html、css、jquery代码。当然这里不是Glimmer的程序, 而是Glimmer的源...

    jsPanel4:一个JavaScript库,用于创建高度可配置的浮动面板,模式,工具提示,提示通知程序提示或上下文菜单,以在后端解决方案和其他Web应用程序中使用

    jsPanels可用作浮动,可拖动和可调整大小的面板,模态,工具提示,提示/警报/通知程序或contextmenus 。jsPanel 4主页: ://jspanel.de只是现代的移动或桌面浏览器,例如FF,Chrome,EDGE,Brave,Opera和Vivaldi。...

    AJAX基础概念、核心技术与典型案例(内涵动态实例)

    1.本书1~16章所附代码的运行环境 ...程序描述:本章将仿照Google Suggest,使用Ajax技术实现动态获取搜索提示的功能。当输入搜索关键字时,自动向服务器发送请求,查询相关的关键字,并及时提示用户可输入的关键字。 ...

    ASP.NET 控件的使用

    8.5.2 SQL Server 2005 Express管理工具 249 8.5.3 服务器端数据库与本地数据库 250 8.6 数据库驱动的Web应用程序示例 252 8.7 小结 253 第9章 使用SqlDataSource控件 254 9.1 创建数据库连接 255 9.1.1 连接到...

    Telerik.Web.UI安装包01

    telerik 的 r.a.d.controls 套装是一款最具革命性和广泛性的开发工具集,它主要针对专业级的 ASP.NET 开发,适用于 AJAX, Atlas 、Visual Studio .NET 2005 、Visual Studio 2008 及 ASP.NET 3.5。通过该产品的强大...

    JavaScript实战

    10.3.2 使用其他Web页面的工具提示 308 10.3.3 使用隐藏内容的工具提示 309 10.3.4 控制工具提示的显示 311 10.3.5 格式化工具提示 315 10.3.6 Cluetip教程 316 10.4 创建可排序表格 321 10.4.1 样式化表格 324 ...

    ASP.NET.4揭秘 卷2

    n172 要求安全提示问题和答案 n173 在PasswordRecovery控件中使用模板 n18 使用LoginView控件 n19 小结n第2章 使用ASPNET Membership n21 配置身份验证 n211 配置Forms身份验证 n212 使用无cookie的Forms身份验证 n...

    EXTJS 学习笔片段1

    EXTJS 学习笔片段1 ... Toolbar工具菜单创建 分页工具栏创建 Window 弹出处理window窗口(模态窗口) MessageBox show(报错窗口、保存提示、选择窗口) alert prompt 实用工具类 JS异常捕捉 Ajax提交

    \JavaScript权威指南(第五版)

    创建有Ajax特性的工具提示;在Ajax应用中使用XPath和XSLT加载XML文档对象;以及更多 第三部分全面介绍了JavaScript语言的核心。讲述了在JavaScript 1.5和ECMAScript version 3中定义的每一个类、对象、构造器、方法...

    JQuery权威指南源代码

    动态创建节点元素 动态插入节点方法 动态插入节点方法 复制元素节点 替换元素节点 包裹元素节点 遍历元素 删除元素 数据管理 第4章 事件中的冒泡现象 bind方法绑定事件 映射方式绑定不同的事件 切换事件...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

Global site tag (gtag.js) - Google Analytics