人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細頁面

運用JScript/CSS 編程技術(shù)模擬完成TABView控件

運用JScript/CSS 編程技術(shù)模擬完成TABView控件

更新時間:2022-07-14 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

標題 利用JScript/CSS 編程技術(shù)模擬實現(xiàn)TABView控件zosatapo(原作)

關(guān)鍵字 JScript CSS TABView 控件 網(wǎng)頁設(shè)計



利用JScript/CSS 編程技術(shù)模擬實現(xiàn)TABView控件
[key word] JScript CSS TABView 控件 網(wǎng)頁設(shè)計
[abstract]本文介紹JSCript/CSS編程來模擬實現(xiàn)TABView控件。

[Author] zosatapo(CSDN會員)
[Email]dertyang@263.net

[正文]
熟悉可視化界面編程的朋友一定很熟悉各種控件。在所有的控件中有一個控件在數(shù)據(jù)庫應(yīng)用編程中
經(jīng)常用到,這個控件就是TabView控件,當然也可以叫屬性頁(PropertyPage)。本文將利用JScipt結(jié)合CSS
技術(shù)在網(wǎng)頁中模擬實現(xiàn)這個控件。
現(xiàn)在先介紹一下界面的主要組成部分。根據(jù)對TabView控件的分析理解,我把界面分成兩個部分。一是
Tab部分(或者叫頁面控制部分),一是頁面部分(或者叫內(nèi)容部分)。同時為了本文描述簡單,TAB控制部分
的每個TAB只有兩種狀態(tài)(激活或者非激活),每個TAB控制一個單獨的頁面。同時為了使用的靈活性原因,
頁面設(shè)計這個任務(wù)應(yīng)該由用戶自己來完成設(shè)計,但是要符合一定的格式要求。
現(xiàn)在正式開始解釋這個控件的實現(xiàn)要素和實現(xiàn)過程。
//////////////////////////////////////////////////////
//////// 實現(xiàn)要素部分 //////
//////////////////////////////////////////////////////
[要素一]控件使用的主要樣式列表
.TabActive {
color: #ffff00;
font-family:宋體;font-size:9pt;
font-weight: bold;
background-color: #6699CC;
cursor: default;
border-top: 2px outset #99ccff;
border-right: 2px outset #336699;
}
//上面是Tab處于激活狀態(tài)時使用的樣式
.TabInactive {
color: #FFFFFF;
font-family:宋體;font-size:9pt;
font-weight: normal;
background-color: #003366;
cursor: hand;
border-right: 1px solid #99ccff;
border-bottom: 1px solid #99ccff;
}
//上面是Tab處于非激活狀態(tài)時使用的樣式
.PageNT {
background-color:#F5F0E6;
width:100%;height:508px;
padding-left:0px;padding-top:2px;
}
//上面是Tab控制的頁面使用的樣式
[要素二]動態(tài)生成TAB控制部分代碼
這個部分功能主要由多個TAB控件控制說明數(shù)組和一個函數(shù)組成。

數(shù)組采用下面的形式:
//Tab部分TabID Tab部分的初始運行類類型 Tab部分對應(yīng)的頁面pageID
var Folder1=new Array("Tab1","TabActive","Page1");

//這里請注意:程序把第一把Tab部分的初始運行類類型定義為TabActive的項目選擇為
//默認的選擇項,其對應(yīng)頁面也作為默認顯示頁面。

********************重要提示**************************

//但是為了簡單,實際上也符合邏輯,應(yīng)該所有定義中只有一個控制初始化
//運行類類型定義為TabActive

//下面這個函數(shù)根據(jù)數(shù)組生成TABView的控制部分。
function CreateFolder()
{
...
};
[具體請參閱文后源代碼]

[要素三]TabView控件的功能模擬
正如上面所講的那樣,本文盡可能把代碼寫的簡單,把實現(xiàn)說的更容易理解一點。
所以這個模擬控件沒有實現(xiàn)mouseover以及mouseout時間響應(yīng),同時我也沒有使用
更新的HTC組件技術(shù)。我下篇文章會寫一個組件的例子。

本文在TABView控件的TAB控制部分生成以后只是簡單為其提供一個click事件處理器。
這樣就可以模擬了真正TABView控件的換頁功能。頁面部分用戶根據(jù)下面的規(guī)則按照
自己對頁面內(nèi)容的需要自己添加。下文我會在實現(xiàn)過程部分對此有詳細的說明。


//////////////////////////////////////////////////////
//////// 實現(xiàn)過程部分 //////
//////////////////////////////////////////////////////
[步驟一]建立TABView控件的控制數(shù)組定義

var Folder1=new Array("Tab1","TabActive","Page1");

var Folder2=new Array("Tab2","TabInActive","Page2");

...

[步驟二]動態(tài)生成TABView控件的控制部分

調(diào)用函數(shù)CreateFolder()讀取數(shù)組定義按照格式生成TABView控件的控制部分。


[步驟三]用戶生成自己的頁面(可以靜態(tài)也可以是動態(tài)。本文示例為靜態(tài))

//下面是頁面要求的格式
<div ID="Case Detail" CLASS="PageNT" style="display:none">
//頁面格式中有兩個是必須的。一個是ID必須是[]
//這里用戶可以自由的添加自己需要的內(nèi)容
</div>

[步驟四]為TABView控件的控制部分中的每一個TAB安裝事件處理器

tab.attachEvent("onclick",new Function("tab_onclick(this)"));


到這里利用JScript/CSS模擬實現(xiàn)簡單TABView控件的工作就全部結(jié)束了。

現(xiàn)在可以在IE瀏覽自己的控件了,感覺不錯吧。

//////////////////////////////////////////////////////
//////// 結(jié)束語 //////
//////////////////////////////////////////////////////
本文只是簡單模擬一下TABView控件,要真正在WEB下面實現(xiàn)一個TABView要考慮
很多其他的因素,不如上面提供的TAB控制部分onmouseover,onmouseout等事件
的響應(yīng)問題。同時隨著XML技術(shù)的發(fā)展,我們可以更好的利用數(shù)據(jù)庫結(jié)合服務(wù)器
端軟件動態(tài)生成TABView的控制頁面。同時如果我們采用HTC組件技術(shù)的話,我們
也可以寫出可重用性更高的代碼。

//////////////////////////////////////////////////////
//////// 本文使用全部源代碼//////
//////////////////////////////////////////////////////
為了方面我把所有的文件都放在了一個文檔中了。你根據(jù)需要可以
把javascript/jscript以及css,htm文件各自獨立出來。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style type="text/css">

.titlebar {font-family:宋體; font-size:9pt;color:#003300;background-color:#99CC99}
BODY {font-family:宋體;font-size:9pt; background-color:#F5F0E6;}

.TabActive {
color: #ffff00;
font-family:宋體;font-size:9pt;
font-weight: bold;
background-color: #6699CC;
cursor: default;

border-top: 2px outset #99ccff;
border-right: 2px outset #336699;
}
.TabInactive {
color: #FFFFFF;
font-family:宋體;font-size:9pt;
font-weight: normal;
background-color: #003366;
cursor: hand;

border-right: 1px solid #99ccff;
border-bottom: 1px solid #99ccff;
}
.TabInactiveOver {
color: #FFFFFF;
font-family:宋體;font-size:9pt;
font-weight: normal;
background-color: #003366;
cursor: hand;

border-right: 1px solid #99ccff;
border-bottom: 1px solid #99ccff;
}
.TabInactiveEmpty {
color: #FFFFFF;
font-family:宋體;font-size:9pt;
font-weight: normal;

cursor: hand;

border-right: 1px solid #99ccff;
border-bottom: 1px solid #99ccff;



.TabBarNT {background-color:#EEEEEE;

width:96%;height:21px;}
.PageNT {
background-color:#F5F0E6;

width:100%;height:508px;
padding-left:0px;padding-top:2px;
}

</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
//輔助函數(shù)
function ltrim(str)
{
return str.replace(/^\s*/,"");
}

function rtrim(str)
{
return str.replace(/\s*$/,"");
}

function trim(str)
{
var strTmp;
strTmp=ltrim(str);
strTmp=rtrim(strTmp);
return strTmp;
}

//-->
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--
//定義數(shù)組
var Folder1=new Array("Tab1","TabActive","Page1");
var Folder2=new Array("Tab2","TabInActive","Page2");
var Folder3=new Array("Tab3","TabInActive","Page3");
//-->
</SCRIPT>

<SCRIPT LANGUAGE="JavaScript">
<!--
//得到tab控制部分的元素個數(shù)
function getTabPartCount()
{
var count=1;

while(eval("window.Folder"+count)){count++;}

count--;
return count;
}
function CreateFolder()
{

document.write("<table bgColor='#6699cc' border=0 cellPadding=0 "+
 "cellSpacing=0 id='TabBar' style='background-color:transparent;' width=100%>");
document.write("<tr height=24 vAlign='center'>");

tabNum=getTabPartCount();
i=1;
while(i<tabNum+1){
Folder=eval("Folder"+i);
document.write("<td class='"+Folder[1]+"' id='"+Folder[0]+
"' align='center'>"+Folder[2]+"</td>");
i++;
}
totalnum=tabNum+1;
document.write("<td class='TabInactive'width=100%> </td>");
document.write("</tr><tr height=4><td colSpan='"+totalnum+"' valign=top bgColor='#6699cc'> </td></tr>");
document.write("<tr><td bgColor='#F5F0E6' colSpan="+totalnum+" height=16 valign=top></td></tr>");

}

function getTabPartArray()
{
var objReturn=new Array();
var obj=null;
var count=getTabPartCount();
var i=1;
while(i<=count)
{
obj=eval("window.Folder"+i);
obj=document.all(obj[0]);
if(obj!=null)
{
 objReturn[objReturn.length]=obj;
}
i++;
}

return objReturn;
}

function getCurrentActiveTab()
{
var ttabArray=getTabPartArray();
for(var i=0;i<ttabArray.length;i++)
{
if(ttabArray[i].className=="TabActive")
{
 return ttabArray[i];
}
}

}
function getCurrentActivePage()
{
var obj=getCurrentActiveTab();
var pageID=obj.innerText;
var page=getPageByID(pageID);
return page;
}
function getPageByID(pageID)
{
var obj=document.all(pageID);

return obj;
}

function getTabByID(tabID)
{
var obj=document.all(tabID);
return obj;
}

function tab_onclick()
{
var curTab=getCurrentActiveTab();
var curPage=getCurrentActivePage();

var objTab=getTDFromPoint();
var pageID=null;
var objPage=null;
if(objTab!=null)
{
pageID=objTab.innerText;
//alert(pageID);
objPage=getPageByID(pageID);
if(curTab.id==objTab.id)
{
 return;
}
else
{
 objPage.style.display="block";
 curPage.style.display="none";

 objTab.className="TabActive";
 //alert(objTab.className);
 curTab.className="TabInActive";

}
}
}

function getTDFromPoint()
{
var obj=event.srcElement;
if((obj.tagName=="TD")&&((obj.className=="TabInActive")||(obj.className=="TabActive")))
{
return obj;
}
else
{
return null;
}
}

function fattachEvent()
{
var objTabArray=getTabPartArray();
for(i=0;i<objTabArray.length;i++)
{
var tabID=objTabArray[i].id;
//alert(tabID);
objTabArray[i].attachEvent("onclick",new Function("tab_onclick()"));
}
}
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
CreateFolder();
fattachEvent();
//-->
</SCRIPT>
</HEAD>

<BODY BGCOLOR="#FFFFFF">
<input type="button" value="Test" onclick="tab_onclick(document.all('Tab2'))">
<div ID="Page1" CLASS="PageNT" style="display:block">
<p align="center"><font size="4">This Test Page : Page One</font></p>
<TABLE align="center" border="1">
<TR>
<TD>Name</TD>
<TD>Age</TD>
</TR>
<TR>
<TD>ZosaTapo</TD>
<TD>23</TD>
</TR>
</TABLE>
</div>

<div ID="Page2" CLASS="PageNT" style="display:none">
<p align="center"><font size="4">This Test Page : Page Two</font></p>
<TABLE align="center" border="1">
<TR>
<TD>Name</TD>
<TD>Age</TD>
</TR>
<TR>
<TD>ZosaTapo</TD>
<TD>23</TD>
</TR>
</TABLE>
</div>

<div ID="Page3" CLASS="PageNT" style="display:none">
<p align="center"><font size="4">This Test Page : Page Three</font></p>
<TABLE align="center" border="1">
<TR>
<TD>Name</TD>
<TD>Age</TD>
</TR>
<TR>
<TD>ZosaTapo</TD>
<TD>23</TD>
</TR>
</TABLE>
</div>
</BODY>
</HTML>




溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 黑水县| 阿尔山市| 商城县| 滨海县| 和平县| 建平县| 大宁县| 康乐县| 长寿区| 龙胜| 咸阳市| 宿松县| 湘西| 巴彦县| 多伦县| 安乡县| 额济纳旗| 清远市| 柳河县| 浦城县| 泽普县| 平和县| 福贡县| 栾城县| 司法| 定陶县| 错那县| 且末县| 西乌珠穆沁旗| 四平市| 彰化县| 抚宁县| 石嘴山市| 贺兰县| 衡东县| 开平市| 鄢陵县| 常州市| 科技| 安乡县| 绥中县|