站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Javascript 专题利用JScript/CSS 编程技术模拟实现TABView控件

利用JScript/CSS 编程技术模拟实现TABView控件

摘要: 利用JScript/CSS 编程技术模拟实现TABView控件


利用JScript/CSS 编程技术模拟实现TABView控件
[key word] JScript CSS TABView 控件 网页设计
[abstract]本文介绍JSCript/CSS编程来模拟实现TABView控件。

[Author] zosatapo(CSDN会员)
[Email] dertyang@263.net

[正文]
熟悉可视化界面编程的朋友一定很熟悉各种控件。在所有的控件中有一个控件在数据库应用编程中
经常用到,这个控件就是TabView控件,当然也可以叫属性页(PropertyPage)。本文将利用JScipt结合CSS
技术在网页中模拟实现这个控件。
现在先介绍一下界面的主要组成部分。根据对TabView控件的分析理解,我把界面分成两个部分。一是
Tab部分(或者叫页面控制部分),一是页面部分(或者叫内容部分)。同时为了本文描述简单,TAB控制部分
的每个TAB只有两种状态(激活或者非激活),每个TAB控制一个单独的页面。同时为了使用的灵活性原因,
页面设计这个任务应该由用户自己来完成设计,但是要符合一定的格式要求。
现在正式开始解释这个控件的实现要素和实现过程。
//////////////////////////////////////////////////////
//////// 实现要素部分 //////
//////////////////////////////////////////////////////
[要素一]控件使用的主要样式列表
.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处于激活状态时使用的样式
.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处于非激活状态时使用的样式
.PageNT {
background-color:#F5F0E6;
width:100%;height:508px;
padding-left:0px;padding-top:2px;
}
//上面是Tab控制的页面使用的样式
[要素二]动态生成TAB控制部分代码
这个部分功能主要由多个TAB控件控制说明数组和一个函数组成。

数组采用下面的形式:
//Tab部分TabID Tab部分的初始运行类类型 Tab部分对应的页面pageID
var Folder1=new Array("Tab1","TabActive","Page1");

//这里请注意:程序把第一把Tab部分的初始运行类类型定义为TabActive的项目选择为
//默认的选择项,其对应页面也作为默认显示页面。

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

//但是为了简单,实际上也符合逻辑,应该所有定义中只有一个控制初始化
//运行类类型定义为TabActive

//下面这个函数根据数组生成TABView的控制部分。
function CreateFolder()
{
...
};
[具体请参阅文后源代码]

[要素三]TabView控件的功能模拟
正如上面所讲的那样,本文尽可能把代码写的简单,把实现说的更容易理解一点。
所以这个模拟控件没有实现mouseover以及mouseout时间响应,同时我也没有使用
更新的HTC组件技术。我下篇文章会写一个组件的例子。

本文在TABView控件的TAB控制部分生成以后只是简单为其提供一个click事件处理器。
这样就可以模拟了真正TABView控件的换页功能。页面部分用户根据下面的规则按照
自己对页面内容的需要自己添加。下文我会在实现过程部分对此有详细的说明。

//////////////////////////////////////////////////////
//////// 实现过程部分 //////
//////////////////////////////////////////////////////
[步骤一]建立TABView控件的控制数组定义

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

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

...

[步骤二]动态生成TABView控件的控制部分

调用函数CreateFolder()读取数组定义按照格式生成TABView控件的控制部分。


[步骤三]用户生成自己的页面(可以静态也可以是动态。本文示例为静态)

//下面是页面要求的格式

[步骤四]为TABView控件的控制部分中的每一个TAB安装事件处理器

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


到这里利用JScript/CSS模拟实现简单TABView控件的工作就全部结束了。

现在可以在IE浏览自己的控件了,感觉不错吧。

//////////////////////////////////////////////////////
//////// 结束语 //////
//////////////////////////////////////////////////////
本文只是简单模拟一下TABView控件,要真正在WEB下面实现一个TABView要考虑
很多其他的因素,不如上面提供的TAB控制部分onmouseover,onmouseout等事件
的响应问题。同时随着XML技术的发展,我们可以更好的利用数据库结合服务器
端软件动态生成TABView的控制页面。同时如果我们采用HTC组件技术的话,我们
也可以写出可重用性更高的代码。

//////////////////////////////////////////////////////
//////// 本文使用全部源代码 //////
//////////////////////////////////////////////////////
为了方面我把所有的文件都放在了一个文档中了。你根据需要可以
把javascript/jscript以及css,htm文件各自独立出来。


HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<head>
New Document





<script LANGUAGE="JavaScript">

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

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

//
</script>

<script LANGUAGE="JavaScript">

<script LANGUAGE="JavaScript">

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

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

document.write("<table bgColor='#6699cc' border=0 cellPadding=0 "+ document.write("<tr height=24 vAlign='center'>");

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

}

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 {
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 {
var tabID=objTabArray[i].id;
//alert(tabID);
objTabArray[i].attachEvent("onclick",new Function("tab_onclick()"));
}
}
//
</script>
<script LANGUAGE="JavaScript">

<body BGCOLOR="#FFFFFF">
<input type="button" value="Test" onclick="tab_onclick(document.all('Tab2'))">


This Test Page : Page One


<table align="center" border="1">
<tr>
<td>Name</td>
<td>Age</td>
</tr>
<tr>
<td>ZosaTapo</td>
<td>23</td>
</tr>
</table>


</body>


</td> </tr> <tr> <td vAlign=top align=left height="100%">
↑返回目录
前一篇: 公历,农历日期
后一篇: FileSystemObject 对象