亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

詳解Ajax標簽導航實例

2024-09-01 08:26:25
字體:
來源:轉載
供稿:網友

之前整理發表了《XMLHTTPRequest的屬性和方法簡介》,它ajax要使用的核心的技術之一,現在就來實際運用它。這個Ajax標簽導航,是我很久前就寫的一個腳本,很實用的(還被很多網站收錄了哦),現在拿它來做實例講解吧!當然個人能力有限,有什么不對的地方還請多包含!

演示地址:http://www.yaohaixiao.com/code/ajaxtab/index.htm
代碼下載:ajaxtab.rar

效果大家看到了,核心功能有:

  1. 將當前選中標簽以特殊的樣式顯示
  2. 將異步加載的頁面信息顯示到指定的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;
}
-->

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人在线一区| 国产成人拍精品视频午夜网站| 欧美日韩中文字幕在线| 超在线视频97| 最近2019年好看中文字幕视频| 亚洲日本欧美日韩高观看| 国产成人自拍视频在线观看| 91香蕉嫩草影院入口| 精品一区二区三区电影| 久久久久国产精品免费网站| 亚洲无限乱码一二三四麻| 国产激情久久久| 久久国产精品电影| 日韩在线高清视频| 国产一区二区三区视频在线观看| 国产精品一区二区三| 欧美成人精品在线播放| 成人性生交大片免费观看嘿嘿视频| 91在线精品播放| 亚洲福利视频在线| 亚洲最新av网址| 97精品视频在线| 欧美亚洲激情视频| 九九热这里只有在线精品视| 欧美精品在线免费观看| 538国产精品一区二区免费视频| 成人国产精品一区二区| 成人午夜一级二级三级| 欧美日韩美女在线观看| 欧美日韩综合视频网址| 海角国产乱辈乱精品视频| 国产亚洲精品一区二555| 精品成人国产在线观看男人呻吟| 亚洲精品98久久久久久中文字幕| 中文字幕亚洲字幕| 国产精品网站入口| 久久福利视频网| 91色在线观看| 欧美高清理论片| 国产在线观看精品一区二区三区| 91精品久久久久久久| 丝袜一区二区三区| 粉嫩老牛aⅴ一区二区三区| 成人精品一区二区三区| 国产视频精品一区二区三区| 国产美女高潮久久白浆| 国产精品一二区| 欧美日韩中国免费专区在线看| 97人人做人人爱| 色综合亚洲精品激情狠狠| 国产亚洲欧洲高清| 久久久久久中文字幕| 国产欧美一区二区三区视频| 色视频www在线播放国产成人| 一区二区日韩精品| 成人国产亚洲精品a区天堂华泰| xx视频.9999.com| 亚洲大尺度美女在线| 成人妇女免费播放久久久| 欧美肥老太性生活视频| 欧美日韩成人在线视频| 亚洲欧美日韩爽爽影院| 国产精品日韩欧美大师| 97热在线精品视频在线观看| 色伦专区97中文字幕| 国内精品久久久久久| 国产一区二区三区在线看| 国产在线久久久| 欧美精品九九久久| 中文字幕欧美精品在线| 国产在线观看精品| 国产精品久久久久不卡| 国产一区私人高清影院| 亚洲最大的免费| 欧美电影免费看| 日本欧美中文字幕| 97久久精品人人澡人人爽缅北| 日韩中文在线观看| 欧美日韩在线视频观看| 在线精品91av| 久久精品视频亚洲| 欧美理论电影在线观看| 亚洲日本欧美中文幕| 国产成人精品一区| 日韩欧美在线观看| 久久综合色影院| 国产精品欧美一区二区三区奶水| 成人激情在线观看| 亚洲视频axxx| 国产精品嫩草影院久久久| 日韩在线中文字| 欧美激情亚洲另类| 欧美成人一区在线| 午夜精品久久久久久99热软件| 国产精品一区av| 国产精品久久一区| 在线视频精品一| 精品久久久久久久久久| 日韩精品在线视频美女| 国产成人自拍视频在线观看| 亚洲最大中文字幕| 国产精品久久久久久久久免费看| 91av在线影院| 91精品国产乱码久久久久久蜜臀| 操人视频在线观看欧美| 91久久国产精品91久久性色| 国产精品揄拍500视频| 5566日本婷婷色中文字幕97| 91免费在线视频| 久久久免费精品| 欧美日韩国产中文精品字幕自在自线| 最新69国产成人精品视频免费| 国产精品白丝av嫩草影院| 欧美日韩高清在线观看| 国产精品高精视频免费| 日韩一区二区欧美| 欧美成人免费观看| 国产一区二区三区18| 欧美在线影院在线视频| 国产精品久久久久久久久粉嫩av| 久久久精品免费| 国产欧美精品日韩精品| 欧美限制级电影在线观看| 亚洲精品大尺度| 国产精品久久久久久久久久久久久久| 色999日韩欧美国产| 黄色成人在线免费| 国产精品69精品一区二区三区| 国产欧美日韩专区发布| 精品一区电影国产| 久久中文久久字幕| 国产精品一区二区性色av| 国产精品永久免费观看| 欧美xxxx18性欧美| 日韩女在线观看| 欧美乱大交做爰xxxⅹ性3| 国产精品主播视频| 欧美亚洲日本网站| 尤物九九久久国产精品的特点| 久久99热精品这里久久精品| 欧美xxxx14xxxxx性爽| 亚洲最大福利视频| 日韩国产欧美精品在线| 日本高清不卡的在线| 66m—66摸成人免费视频| 国产成人黄色av| 亚洲精品999| 国产精品69av| 久久久精品一区二区三区| 欧美大人香蕉在线| 久久精品成人欧美大片| 国产精品一二三视频| 国产一区二区三区网站| 91精品视频播放| 欧美国产在线视频| 国产精品九九久久久久久久| 亚洲网站在线看| 在线日韩精品视频| 亚洲一区二区三区久久| 成人a在线观看| 久久免费精品日本久久中文字幕| 欧美成人精品不卡视频在线观看| 亚洲国产精品人人爽夜夜爽| 国产这里只有精品|