• 网站首页
  • 涉税提问
  • 财税法规
  • 税收筹划
  • 优惠政策
  • 案例解析
  • 培训中心
  • 财富工具
  • 房产专题
  • 会计范文
中财税帮助

去向导航

  • 常见问题
  • 费用核算
  • 负债核算
  • 会计报表
  • 利润核算
  • 收入核算
  • 外汇核算
  • 资本核算
  • 资产核算
  • 更多...

常用分类

  • 浏览器
  • Windows
  • 音乐/电影
  • 网站开发
  • 游戏
  • 办公自动化

中财税帮助系统

2008-10-7

欢迎您登陆并使用中国财税咨询中心为您免费提供的资料,交流,学习为一体的平台!

如果您在使用中遇到什么问题,请您不要吝啬,一定要写信给我们!!

Email:Shellapi@126.com 期待您的来信,或指导批语!

帮助内难免有收集的资料,如果侵犯了您的仅力,请您来信告知,我们马上删除或更新处理!

文章搜索--请输入关键词:

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

更多2008-10-7 日更新内容!
    标题     利用JScript/CSS 编程技术模拟实现TABView控件    zosatapo(原作)
      
    关键字     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控件的控制部分。


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

    //下面是页面要求的格式
    <div ID="Case Detail" CLASS="PageNT" style="display:none">
    //页面格式中有两个是必须的。一个是ID必须是[]
    //这里用户可以自由的添加自己需要的内容
    </div>

    [步骤四]为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文件各自独立出来。


    <!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">
    <!--
    //辅助函数
    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">
    <!--
    //定义数组
    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控制部分的元素个数
    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></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<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>





Site designed by 中国财税咨询中心