Ajax(3)--DOM操作HTML 你忘记了吗?

本文介绍了一个使用Ajax技术实现在鼠标悬停时显示商品详细信息的HTML页面示例。该示例通过DOM操作来更新HTML元素,并根据不同浏览器创建对应的XMLHttpRequest对象以发送请求获取商品详情。

对应的HTML页面程序的代码如下所示。在该程序中除了与Ajax相关的程序基本框架之外,读者需要特别关注一下使用DOM操作HTML文档中对应元素的方法。

源程序名称:main.htm

<html>

      <head>

            <title>shopping online</title>

            <meta http-equiv="content-type" content="text/html; charset=gb2312">

            <link href="images/css.css" type="text/css" rel="stylesheet">

      </head>

      <script type="text/javascript">       

    var datadiv;

    var datatablebody;

    var curelement;

 

      var xmlhttpreq = false;

      //创建xmlhttprequest对象      

    function createxmlhttprequest() {

            if(window.xmlhttprequest) { //mozilla 浏览器

                  xmlhttpreq = new xmlhttprequest();

            }

            else if (window.activexobject) { // IE浏览器

                  try {

                        xmlhttpreq = new activexobject("msxml2.xmlhttp");

                  } catch (e) {

                         try {

                               xmlhttpreq = new activexobject("microsoft.xmlhttp");

                        } catch (e) {}

                  }

            }

      }

      //发送请求函数

      function getdetail(element) {

           datatablebody = document.getelementbyid("databody");           

           datadiv = document.getelementbyid("popup");

            createxmlhttprequest();

           curelement = element;

           var url = "tipservlet?key=" + escape(element.id);

             xmlhttpreq.open("get", url, true);

             xmlhttpreq.onreadystatechange = processresponse;//指定响应函数

             xmlhttpreq.send(null);  // 发送请求

      }

      // 处理返回信息函数

      function processresponse() {

      if (xmlhttpreq.readystate == 4) { // 判断对象状态

             if (xmlhttpreq.status == 200) { // 信息已经成功返回,开始处理信息

                             setdata(xmlhttpreq.responsexml);

                 } else { //页面不正常

                        window.alert("您所请求的页面有异常。");

                 }

          }

    }

    // 显示提示框

    function setdata(data) {           

         cleardata();

         setoffsets();

         var content = data.getelementsbytagname("content")[0].firstchild.data;

         var row = createrow(content);           

         datatablebody.appendchild(row);

    }

    //生成表格内容行

    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() {

       datadiv.style.border = "black 1px solid";

       var top = 0;

       while(curelement) {

          top += curelement["offsettop"];

          curelement = curelement.offsetparent;

       }

       datadiv.style.left = 50 + "px";

       datadiv.style.top = top + "px";

   }

 

    // 清除提示框

    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>

 

    <body leftmargin="0" topmargin="0">

         <table cellspacing="0" cellpadding="0" width="778" align="center" border="0">

               <tbody>

                     <tr>

                           <td height="10"></td>

                     </tr>

                  </tbody>

            </table>

            <table height="148" cellspacing="0" cellpadding="0" width="778" align="center" border="0">

                  <tbody>

                        <tr valign="top">

                              <td width="236">

                                    <table width="375" height="340">

                                          <!--dwlayouttable-->

                                          <tbody>

                                                <tr>

                                                       <td width="348" height="1">

                                                       </td>

                                                       <td height="1" width="29"></td>

                                                </tr>

                                                <tr>

                                                       <td height="13" width="348">

                                                       <table id="autonumber1" style="border- collapse: collapse" bordercolor="#111111" height="20" cellspacing="0" cellpadding="0" width="151" background="images/fu.gif" border="0">

                                                             <tbody>

                                                                   <tr>

                                                                        <td align="center" width="82">

                                                                              <b>精品推荐</b>

                                                                        </td>

                                                                        <td align="center">

                                                                        </td>

                                                                   </tr>

                                                             </tbody>

                                                       </table>

                                                </td>

                                                <td height="13" width="29">

                                                </td>

                                          </tr>

                                          <tr>

                                                <td valign="top" height="328" width="348">

                                                      <table cellspacing="0" cellpadding="0" width="103%" border="0">

                                                             <tbody>

                                                                   <tr>

                                                                        <td width="50%">

                                                                              <img id="1" onm- ouseover="getdetail(this);" onmouseout="cleardata();" src="images/ibmt43bb4.jpg" vspace="6" border="0" alt="">

                                                                              <a><b>

                                                                              <br>

                                                                        </td>

                                                                        <td width="50%">

                                                                              <br>

                                                                              商品名称:
                                                                              ibm-t43bb

                                                                              <br>

                                                                              会员价:2500

                                                                              <br>

                                                                        </td>

                                                                   </tr>

                                                                   <tr>

                                                                        <td width="50%">

                                                                              <img id="2" onm- ouseover="getdetail(this);" onmouseout="cleardata();" src="images/hpnc4200.jpg" vspace="6" border="0" alt="">

                                                                        </td>

                                                                        <td width="50%">

                                                                              <br>

                                                                              商品名称:
                                                                              
hp-nc4200

                                                                              <br>

                                                                              <br>

                                                                              会员价: 1150

                                                                              <br>

                                                                        </td>

                                                                   </tr>

                                                                   ……

                        <tr>

                              <td valign="top" colspan="4" height="16" width="776">

                              </td>

                        </tr>

                  </tbody>

            </table>

            <div style="position:absolute;" id="popup">

                  <table bgcolor="#fffafa" border="0" cellspacing="2" cellpadding="2" />

                        <tbody id="databody">

                        </tbody>

                  </table>

            </div>

      </body>

</html>

转载于:https://www.cnblogs.com/zhengxi/archive/2010/06/10/1755285.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值