Ajax实现工具条提示

ajax|工具条

    页面:toolTip.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
    <title>Ajax工具条提示</title>
    <script type="text/javascript">
        var xmlHttp;
        var dataDiv;
        var dataTable;
        var dataTableBody;
        var offsetEl;
 
        //创建XMLHttpRequest对象
        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();
            offsetEl = 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 = offsetEl.offsetWidth;
            var top = calculateOffsetTop(offsetEl);
            dataDiv.style.border = "black 1px solid";
            dataDiv.style.left = end + 15 + "px";
            dataDiv.style.top = top + "px";
        }
 
        //计算顶部坐标偏移量
        function calculateOffsetTop(field) {
          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]);
            }
            dataDiv.style.border = "none";
        }
    </script>
  </head>
  <body>
    <h1>Ajax Tooltip Example</h1>
    <h3>Golf Courses</h3>
    <table id="courses" bgcolor="#FFFAFA" border="1" cellspacing="0" cellpadding="2"/>
        <tbody>
            <tr><td id="1" >Augusta National</td></tr>
            <tr><td id="2" >Pinehurst No. 2</td></tr>
            <tr><td id="3" >St. Andrews Links</td></tr>
            <tr><td id="4" >Baltusrol Golf Club</td></tr>
        </tbody>
    </table>
    <div style="position:absolute;" id="popup">
        <table id="courseData" bgcolor="#FFFAFA" border="0" cellspacing="2" cellpadding="2"/>
            <tbody id="courseDataBody"></tbody>
        </table>
    </div>

  </body>
</html>

服务器:ToolTipServlet.java

package ajaxbook.chap4;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.*;
import javax.servlet.http.*;

public class ToolTipServlet extends HttpServlet {
    //课程集合
    private Map courses = new HashMap();
   
    //初始化集合数据
    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);
    }

    /**
     * 处理Get方法
     * @param request HttpServletRequest
     * @param response HttpServletResponse
     * @throws ServletException
     * @throws IOException
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        //得到参数key
        Integer key = Integer.valueOf(request.getParameter("key"));
        System.out.println("key:" + key.toString());
        CourseData data = (CourseData) courses.get(key);
       
        //构建返回字符串
        PrintWriter out = response.getWriter();

        response.setContentType("text/xml");
        response.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();
    }

    /** Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        doGet(request, response);
    }

    /** Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }

    /**
     * 内部类,课程
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2006</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */
    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;
        }
    }
}

时间: 2025-01-01 03:50:32

Ajax实现工具条提示的相关文章

动态菜单项状态条提示工具条提示问题

问题的提出: 一个应用程序想要动态改变菜单项.使用CCmdUI::SetText("Menu Text")可以改变菜单文本,但是如何动态改变工具条和状态条的文本呢? 有几种策略,避免,欺骗,面对...... 首先,避免:为什么你非要动态改变菜单项?一般说来,这是个坏主意,动态菜单容易把人搞糊涂.我正在使用你的产品,本来用得好好的突然菜单项变了.不管什么时候,每当我看到一个改变菜单的应用时,都要琢麽为什么他们需要这样的用户界面设计. 然而,每一个规则都有例外,许多例子的动态改变菜单项都很

Silverlight的自定义tooltip提示工具条

这种应用场景其实很多,比如游戏中装备/魔法的选择菜单,这里借用了"深蓝色右手"的一张图  再比如聊天室中的文本颜色设置  虽然sl的ToolTipService.ToolTip属性可以设置任何对象,比如下面这样 代码 1 <Rectangle Fill="Red" Height="50" Width="50" ToolTipService.Placement="Top">2           

Google toolbar 工具条介绍

中介交易 SEO诊断 淘宝客 云主机 技术大厅 互联网信息搜索是仅次于电子邮件的第二大网络应用,几乎所有上网的人都会用到搜索引擎来查找信息,因此对网民们来说,搜索引擎已成为大家网上冲浪不可或缺的得力助手. 在众多搜索引擎中,Google以它查询精确,功能强大,速度快而日益受到用户欢迎.以纯搜索应用而言,Google是目前使用频率最高的搜索引擎.如果你平时用过搜索引擎却没听说过Google的话,那只能说你太孤陋寡闻了! 图1 Google一贯的目标的是成为最好的搜索引擎,为满足用户需求可谓不遗余力

Qt学习之路(12):菜单和工具条

在前面的QMainWindow的基础之上,我们开始着手建造我们的应用程序.虽然现在已经有一个框架,但是,确切地说我们还一行代码没有写呢!下面的工作就不那么简单了!在这一节里面,我们要为我们的框架添加菜单和工具条. 就像Swing里面的Action一样,Qt里面也有一个类似的类,叫做QAction.顾名思义,QAction类保存有关于这个动作,也就是action的信息,比如它的文本描述.图标.快捷键.回调函数(也就是信号槽),等等.神奇的是,QAction能够根据添加的位置来改变自己的样子 --如

jquery toolbar与网页浮动工具条具体实现代码

toolbar 网页浮动工具条非常实用的一个功能,下面为大家介绍下使用jquery如何快速做到 jquery 实现toolbar与网页浮动工具条jQuery实现方法  /*  基本StructureWe'll更新index.php教程的HTML代码和对新闻联播style.css教程中的CSS代码.    我们建立了一个固定的面板(ID为工具栏组)两个浮动方面,我们将在第二个步骤与他们的图标和提示气泡(左),一个快速菜单和"隐藏按钮列表"(添加到隐藏工具栏).  我们还可以期待一个&qu

C# Reportview控件,只显示条件和工具条,而不显示报表主体

问题描述 想要实现的效果:Reportview控件默认显示效果:任务是:给定报表名.打印机名.报表参数实现报表直接的打印.现在基本已经实现了上述功能,但具体到细节,比如参数的类型什么的要继续深究了.Reportview控件可设置其ShowparameterPrompts属性来显示参数的提示.如何设置来显示工具条,而不显示报表主体呢??这样以来就不必手写大量的代码来实现想要的功能了. 解决方案 解决方案二:不好意思,没怎么弄明白你这样是要干嘛.如果你的意思是只想显示工具条,不想显示Reportvi

jquery toolbar与网页浮动工具条具体实现代码_jquery

jquery 实现toolbar与网页浮动工具条jQuery实现方法 /* 基本StructureWe'll更新index.php教程的HTML代码和对新闻联播style.css教程中的CSS代码. 我们建立了一个固定的面板(ID为工具栏组)两个浮动方面,我们将在第二个步骤与他们的图标和提示气泡(左),一个快速菜单和"隐藏按钮列表"(添加到隐藏工具栏). 我们还可以期待一个"显示按钮",它是有用的,当面板隐藏,我们要重新激活它.基于这个原因,我们添加id为toolb

jQuery实现可关闭固定于底(顶)部的工具条菜单效果_jquery

本文实例讲述了jQuery实现可关闭固定于底(顶)部的工具条菜单效果.分享给大家供大家参考,具体如下: 这是一款可关闭始终在页面底部的工具条菜单,浮动在页面顶部的大家见的比较多了,本款从形式上来说与其它的没什么差别,只是浮动在页面的最底部,带一关闭按钮,一般来说,此效果可用作广告条.网站提示以及一些需要用户特别注意的地方. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-fixed-buttom-adv-line-codes/ 具体

Google的工具条被斥为流氓软件

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 以"不作恶"为企业信条的谷歌在华遭遇信任危机.其起因是谷歌的工具栏软件Google Toolbar被指责有流氓软件性质. 事件缘起Google Toolbar软件被网民认为其强制捆绑安装.而就在去年10月,谷歌全球副总裁.大中华区联合总裁李开复在阐述中国策略时还曾明确表示不与流氓软件为伍.李开复甚至批评"不少公司