成都网站推广
 

中联无限-服务热线:028-86637122 工作时间:9:00-18:00 星期一-星期五

 
首页 | 关于我们 | 新闻动态 | 成都网站建设 | 成都网站推广 | 成都微信营销 | 网站制作案例 | 软件开发 | 常见问题 | 域名注册 | 虚拟主机
  网站知识
     推荐工具 / Tools
     网站运营/Operation
  
  客户案例
·巨丰达人减肥训练营
·成都写意经典家具有限公司
·成都卡姆士安防设备有限公司
·新千里装饰集团
·成都吕氏三才中医博爱堂
·泊菲特语言学校
·四川高地易景园林工程公司
·成都烽火建筑装饰设计有限公司
·优尼客酒店
·成都杜嘉机电有限公司
·菲颖1购
·成都安东尼体育文化传播有限公
·四川九章生物化工科技发展有限
·成都环球体育文化传播有限公司
·万友爱淘网上商城
·四川省斯博兰德建筑装饰设计有
·肥犇仔
·成都市猛追湾游泳场
  网站运营
·企业新站推广中存在的六大误区
·网站运营之八大要素
·怎么区别网站运营与网络运营
·怎样区分网站运营和网络运营
·SQL Server 200
·新网站运营后如何迅速增加网站
·减肥网站是怎样提高收入的
·个人网站赢利模式的拓展方向
·商业门户网站运营模式探讨
·成都地方门户网站运营模式
·网站策划人如何盈利
·网站运营模式观察与分析
  最新资讯
·成都网络推广公司介绍的六种推
·分析导致成都网络推广效果差的
·成都网站优化:企业网站关键词
·成都网站优化初期企业应该需要
·浅析成都网站优化中企业如何建
·分析企业在做成都网站优化过程
·短视频营销可以为成都网络推广
·小品牌怎么样才能既省钱又省力
·分析成都网络推广中企业需要注
·如何根据成都网络推广的营销周
·成都网站优化需要遵循哪些规则
·成都SEO网站优化过程中如何
 
   您的位置在:成都网站推广 > 网站知识 > 网站教程 /Tutorial > 正文
   网站教程 /Tutorial

详解Ajax标签导航实例

[ 来源:中联无限科技有限公司   发布日期:2010/11/25 10:35:12 ]
这个Ajax标签导航,是我很久前就写的一个脚本,很实用的(还被很多网站收录了哦),现在拿它来做实例讲解吧!当然个人能力有限,有什么不对的地方还请多包含! 演示地址:http://www.yaohaixiao.com/code/ajaxtab/index.htm 代码下载:ajaxtab.rar 效果大家看到了,核心功能有: 将当前选中标签以特殊的样式显示 将异步加载的页面信息显示到指定的DOM节点中 代码篇: ajaxtab.js:

这个Ajax标签导航,是我很久前就写的一个脚本,很实用的(还被很多网站收录了哦),现在拿它来做实例讲解吧!当然个人能力有限,有什么不对的地方还请多包含! 
演示地址:http://www.yaohaixiao.com/code/ajaxtab/index.htm
代码下载:ajaxtab.rar
效果大家看到了,核心功能有:
将当前选中标签以特殊的样式显示 
将异步加载的页面信息显示到指定的DOM节点中
代码篇:
ajaxtab.js:
<!--
// 判断是否支持ActiveX
var useActiveX=function(){return (typeof ActiveXObject != "undefined");} 
// 判断是否支持DOM
var useDom=function(){return document.implementation && document.implementation.createDocument;}  
// 判断是否支持XMLHttpRequest对象
var useXmlHttp=function(){return (typeof XMLHttpRequest != "undefined");}  
// XMLHttpRequest对象版本
var ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];
// DOM对象版本 
var ARR_DOM_VERS = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"]; 
/* ==================================
* 函数名称:$(i)
* 参数说明:i - 目标节点名称
* 函数功能:获取指定的目标DOM节点
* 返 回 值:返回要搜索的目标DOM节点
* 使用方法:$("frmSearch")
================================== */
function $(i){
      if(!document.getElementById)return false;
      if(typeof i==="string"){
              if(document.getElementById && document.getElementById(i)) {
                     // W3C DOM
               return document.getElementById(i);
         }
         else if (document.all && document.all(i)) {
                // MSIE 4 DOM
               return document.all(i);
         }
         else if (document.layers && document.layers[i]) {
                // NN 4 DOM.. note: this won't find nested layers
               return document.layers[i];
         } 
         else {
               return false;
         }
      }
      else{return i;}
}
/* ==================================
* 函数名称:createXMLHTTPRequest()
* 参数说明:无参数
* 函数功能:创建XMLHttpRequest对象
* 返 回 值:XMLHTTPRequest对象
* 使用方法:var oXmlHttp = createXMLHTTPRequest(); 
================================== */
function createXMLHTTPRequest(){
     // 非IE浏览器(Firefox,Opera),XMLHttpRequest对象是浏览器内置的一个对象
     if (useXmlHttp){ 
         return new XMLHttpRequest();
   } 
   else if (useActiveX) { //在IE(IE< 7.0 = use ActiveX)浏览器中,XMLHttpRequest对象是以ActiveX控件的形式存在的           
         if (!XMLHTTP_VER) {
              for (var i=0; i < ARR_XMLHTTP_VERS.length; i++){
                  try {
                      new ActiveXObject(ARR_XMLHTTP_VERS[i]);
                      XMLHTTP_VER = ARR_XMLHTTP_VERS[i]; // 获取本地IE浏览器相应的XMLHttpRequest对象版本
                      break;
                  } catch (oError) {}
              }
         }
         if (XMLHTTP_VER) {
             return new ActiveXObject(XMLHTTP_VER);
         } 
         else {
             throw new Error("无法创建XMLHttpRequest对象!");
         }
    } 
    else {
         throw new Error("您的浏览器不支持XMLHttpRequest对象!");
    }
}
/* ==================================
* 函数名称:ajaxUpdater(tarObj,sMethod,URL,parameters)
* 参数说明:tarObj - 异步获取信息希望显示的目标节点ID
*           sMethod - 数据提交方法,两个可选值get,post
*           URL - 提交的目标URL地址
*           parameters - URL后面接(传递)的参数  
* 函数功能:将异步传递的目标URL地址返回的信息,无刷新的写到目标
*           节点(tarObj)中
* 返 回 值:new Error() - 运行错误时返回一个报错信息
* 使用方法:var myAjax = ajaxUpdater(msgBox,"get",URL,para);
================================== */
function ajaxUpdater(tarObj,sMethod,URL,parameters){
    var oXmlHttp = createXMLHTTPRequest();
           
    oXmlHttp.open(sMethod, URL+parameters, true);
    oXmlHttp.onreadystatechange = function () {
        if (oXmlHttp.readyState == 4) {
             if (oXmlHttp.status == 200) {
                  if($(tarObj)){
                       $(tarObj).innerHTML = oXmlHttp.responseText;
                  }
                  else{
                       return false;    
                  }          
             } 
             else {
                  throw new Error("有一个错误产生!");
             }
         }    
    }
            
    oXmlHttp.send(null); 

/* ==================================
* 函数名称:ajaxRequest(sMethod,URL,parameters,func)
* 参数说明:sMethod - 数据提交方法,两个可选值get,post
*           URL - 提交的目标URL地址
*           parameters - URL后面接(传递)的参数 
*           func - 页面成功加载后的处理函数(指针) 
* 函数功能:当异步传递的目标URL地址成功加载时,指定相应的处理函数
* 返 回 值:func(oXmlHttp) - 返回处理函数
*           new Error() - 运行错误时返回一个报错信息
* 使用方法:var myAjax = ajaxUpdater("get",URL,para,showMsg);
================================== */
function ajaxRequest(sMethod,URL,parameters,func){
    var oXmlHttp = createXMLHTTPRequest();
           
    oXmlHttp.open(sMethod, URL+parameters, true);
    oXmlHttp.onreadystatechange = function() {
         if (oXmlHttp.readyState == 4) {
              if (oXmlHttp.status == 200) {
                    return func(oXmlHttp);     
              } 
              else {
                    throw new Error("有一个错误产生!");
              }
         }    
    }
            
    oXmlHttp.send(null);   

/* ==================================
* 函数名称:tabsEvent()
* 参数说明:要设置事件的DOM节点ID
* 函数功能:为导航TAB菜单(li)设置onclick处理方法(函数),
*           屏蔽掉a标签默认的处理(打开新链接)事件
* 返 回 值:false - 屏蔽掉a标签默认的处理(打开新链接)事件
* 使用方法:tabsEvent("news","sports");
================================== */
function tabsEvent(){
      for(var i=0;i<arguments.length;i++){
         var tabs = $(arguments[i]);
         // DOM节点(tabs)不存在或者浏览器不支持getElementsByTagName()方法
         // 函数不执行
           if(!tabs || !document.getElementsByTagName) return false;
               
           var theList = tabs.getElementsByTagName("li"); // 搜寻导航标签(ID为tabs)里的所有li标签
           var theLink = tabs.getElementsByTagName("a");  // 搜寻导航标签(ID为tabs)里的所有a标签
               
           for(var j=0;j<theList.length;j++){
                 var theTab = theList[j];
                 if(theTab.parentNode!=tabs) continue;
                     
                 var theA = theLink[j];
                 // 屏蔽掉a标签默认的处理(打开新链接)事件
                 theA.onclick = function(){
                     return false;    
                 }
                 
                 // 为导航TAB菜单(li)设置onclick处理方法(函数)    
                 theTab.onclick = function(){
                  var theClass = this.className;
                  if(theClass!="current" && theClass!="first"){
                            var objId = this.getAttribute("id").split("-")[1]; // 当前选中标签(li)在菜单(ul)中的索引值
                            var tarObj = this.getAttribute("id").split("-")[0]; // 要显示信息的目标DOM节点ID值
                       var theURL = tarObj + "/" + tarObj + objId + ".htm"; // 要异步加载的URL地址
                         ajaxInject($(tarObj),objId,tarObj,theURL);    
                         return false;
                     }
               }
           } 
      }      

/* ==================================
* 函数名称:ajaxInject(ListName,tabId,tarObj,URL)
* 参数说明:ListName - 标签菜单DOM节点ID
*           tabId - 选中的标签(在ListName中的)索引值
*           tarObj - 要显示返回信息的目标DOM节点ID值
*           URL - 要异步处理的URL地址
* 函数功能:设置当前选中标签(li)的样式,
*           将返回信息写到指定DOM节点中。
* 返 回 值:无
* 使用方法:tabsEvent("news","sports");
================================== */
function ajaxInject(ListName,tabId,tarObj,URL){
    if(!ListName || !document.getElementsByTagName) return false;
      var Tabs = ListName;
      var theLi = Tabs.getElementsByTagName("li");
      for(var i=0;i<theLi.length;i++){
            // 设置当前选中标签的样式
          if(i==tabId){
                if(i==0){
                     theLi[tabId].className = "first"; // 当选中第一项的样式
                }
                else{// 
                     theLi[tabId].className = "current"; // 选中其他项的样式
                }     
                var msgBox = tarObj+"Cnt"; 
                var loadstatustext="<div class='loading'><img src='img/loading.gif' alt='正在加载内容, 请稍候...' />正在加载内容, 请稍候...</div>";      
              $(msgBox).innerHTML = loadstatustext; // 加载信息时的提示信息
              var para = "?d=" + Math.random(); // URL后的参数,接Math.random()(一个随机数),目的是处理ajax的缓存问题
              var myAjax = ajaxUpdater(msgBox,"get",URL,para);
          }
          else{// 设置其他标签的样式
              theLi[i].className = "";
              if(tabId!=0){
                    theLi[tabId-1].className = "off"; // 当不是第一项时,隐藏选中项的前一项的分隔标签
                 }  
          }    
      }
}        
//-->inde.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>AjaxTab导航</title>
<link href="css/ajaxtab.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="js/ajaxtab.js"></script>
</head>
<body>
<div class="clearfix cotainer">
     <ul class="tabs" id="news">
         <li class="first" id="news-0"><a href="news/news0.htm">网站重构</a><span></span></li>
         <li id="news-1"><a href="news/news1.htm">CSS布局实录</a><span></span></li>
         <li id="news-2"><a href="news/news2.htm">海啸的地盘</a><span></span></li>
         <li id="news-3"><a href="news/news3.htm">Ajax高级编程</a><span></span></li>
       </ul><br class="clear" />
       <div class="clearfix cnt" id="newsCnt">
          <img src="img/girl-1.jpg" alt="林志琳" />
            <ul>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
            </ul>
     </div>
</div>
<div class="clearfix cotainer">
     <ul class="tabs" id="sports">
         <li class="first" id="sports-0"><a href="sports/sports0.htm">网站重构</a><span></span></li>
         <li id="sports-1"><a href="sports/sports1.htm">CSS布局实录</a><span></span></li>
         <li id="sports-2"><a href="sports/sports2.htm">海啸的地盘</a><span></span></li>
         <li id="sports-3"><a href="sports/sports3.htm">Ajax高级编程</a><span></span></li>
     </ul><br class="clear" />
     <div class="clearfix cnt" id="sportsCnt">
          <img src="img/girl-5.jpg" alt="林志琳" />
          <ul>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖衬衣最后的抢购机抢购机</a> 2006-08-15</li>
          </ul>
     </div>
</div>
<script language="javascript" type="text/javascript">
<!--
tabsEvent("news","sports");
//-->
</script>
</body>
</html>ajaxtab.css:
<!--
*{
   margin:0;
   padding:0;
}
body{
   text-align:center;
   background-color:#FFF;
   color:#18397C;
   font:normal 12px "宋体", Arial, sans-serif;
}
img{border:0;}
ul,li{list-style-type:none;}
a:link,
a:visited{
   color:#18397C;
   text-decoration:none;
}
a:hover{
   color:#F00;
   text-decoration:underline;
}
div,span,p,li,ul,h1,h2,h3,h4,h5,h6{text-align:left;}
/*clear both*/
.clearfix:after {
   content: ".";
   display:block;
   height:0;
   clear: both; 
   visibility: hidden;
}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
*+html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */
.clear{ 
   clear: both; 
   font-size:1px; 
   width:1px; 
   height:1px; 
   visibility: hidden;
}
.cotainer{
   margin:0 auto;
   margin-top:10px;
   width:506px;
   height:auto;
   border:solid #B0BEC7;
   border-width:0 1px 1px 1px;
}
.tabs{
   float:left;
   width:506px;
   height:22px;
   background-image:url(/img/tab_bg.gif);
}
.tabs li{
   float:left;
   display:inline;
   text-align:center;
   width:120px;
   height:12px;
   padding:4px 0 6px 0;
   overflow:hidden;
   letter-spacing:1px;
   position:relative;
}
.tabs li.first{
   background-image:url(/img/tab_active1.gif);
}
.tabs li.current{
   background-image:url(/img/tab_active2.gif);
}
.tabs li.current,
.tabs li.first{
   font-weight:bold;
}
.tabs li.current a,
.tabs li.first a{
   color:#D45417;
}
.tabs li span{
   position:absolute;
   right:0;
   top:3px;
   width:2px;
   height:16px;
   overflow:hidden;
   font-size:1px;
   background-image:url(/img/tab_sline.gif);  
}
.tabs li.first span,
.tabs li.current span,
.tabs li.off span{
   display:none;
}
.cnt{
   margin:0 auto;
   width:496px;
   padding:5px;
   height:auto;
}
.cnt img{
   float:left;
   width:154px;
   height:115px;
   border:1px solid #B0BEC7;
   margin-right:5px;
   display:inline; 
}
.cnt ul{
   float:right;
   width:335px;
   height:117px;
}
.cnt ul li{
   float:left;
   width:335px;
   height:12px;
   overflow:hidden;
   color:#999;
   padding:5px 0 2px 0;
}
.loading{
   margin:0 auto;
   width:506px;
   height:16px;
   padding:51px 0 50px 0;
   overflow:hidden;
   text-align:center;
}
.loading img{
   width:16px;
   height:16px;
   border:0;
   float:none;
   vertical-align:middle;
}
-->

中联无限科技公司提供专业的成都网站建设成都网站设计成都网站制作成都网站推广


上一篇:世界顶级博客的47个技巧
下一篇:网站架构优化:前端程序服务器三者的协调
   相关网站教程 /Tutorial
·SEO之如何更好的布局?2011-08-11
·Ajax2011-05-26
·JSP的定义2011-05-26
·PHP是什么2011-05-26
·CSS教程:CSS背景全攻略2011-03-26
·javascript cookies 存2011-03-25
·网站外部链接的注意事项2011-03-24
·PHP防御木马攻击的技巧2011-03-11
·Apache服务器的配置与管理2011-03-11
·SQL Server数据库查询优化的常用2011-03-09
·SQL Server触发器2011-03-09
·ASP.NET JMAIL 发送邮件方法2011-03-09
首页 | 公司简介 |联系方式 |付款方式 |人才招聘 | 域名空间 | 网页设计案例 | 网站知识 | 解决方案 | 建站指南 | 网站地图
地址:成都市青羊区西大街1号   邮编:610041   E- Mail:619027769@qq.com   代理合作: 028-86637122
网站建设/推广咨询:028-86637122  86618860  传真:028-86637322   
成都中联无限科技有限公司 2004-2014    蜀ICP备05017733号