想问问。。还有ajax

解决方案 »

  1.   

    我工作不到一年
    基本可以用
    写得折叠菜单
    图片展示特效(普通的)
    ajax略略了解
      

  2.   

    一些小的js功能就自己写了.
    复杂的一般都是去找一个现成的demo去改.看/改js都没有什么大问题.
    不过,曾经听别人说过面向对象的js编程,这个就不清楚了.
    js是个很牛的东西,我想不是主攻js的人(比如js版里的"梅子"之类的人),很难,也没有精力在js上能到多深.
    51js里曾经出过太多匪夷所思的js demo 了.比如js的星际,js的outlook....
      

  3.   

    http://cb1156.yakkel.com/jscript/image.html
     我现在就这个水平,累计工作11个月.
      JS从接触开始到现在半年
      

  4.   

    js一般。
    ajax一般基本问题都能解决
      

  5.   

    同问,我的AJAX就是最菜的应用:
    在一个页面的pageload里写方法。把前台的所有HTML代码都清除掉。在XMLHTTPRequest异步请求的时候获取页面的html代码就OK了。这就是俺的ajax。
      

  6.   

    不知道我那是ajax不,反正能实现我要的功能://检查是否存在相同的用户名
        <script language="javascript" type="text/javascript">
        var xmlhttp;
        function createXMLHttpRequest()
        {
            if(window.ActiveXObject)
            {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if(window.XMLHttpRequest)
            {
                xmlhttp=new XMLHttpRequest();
            }
        }
        
        function handleStateChange()
        {
            var DivUserName=document.getElementById("UNDIV");
            if(xmlhttp.readyState==4)
            {
                if(xmlhttp.status==200)
                {
                    DivUserName.innerHTML+=xmlhttp.responseText+"  ";
                }
            }
        }
        
        function startRequest( UserID)
        {
            createXMLHttpRequest();
            xmlhttp.onreadystatechange=handleStateChange;
            xmlhttp.open("POST","CheckSameUserName.aspx?UserID="+UserID,true);
            xmlhttp.send(null);
            
        }
        </script>
      

  7.   

    alert..
    document.getElementById..
      

  8.   

    工作一年半 从pt到jq到ext dojo到现在基本用自己写的类库 勉强还够用
    09年准备弄弄aspx php争取在09年突破10k
      

  9.   

    这个東西我認為能夠看懂別人的demo,並且根據實際需要會修改即可。沒有必要研究太深,做了這麼多年項目,JS的應用也就是這麼點范圍,研究太深了沒有發揮
      

  10.   

    学js一年,写了个自己的JS框架,js真的很好用。水平嘛js、ajax、css等web前端完全精通。
      

  11.   

    ((function(){var a="1234";return function(t){alert(t+a);}})())("hello");明白这句话怎么运行的,你的js水平就ok了
      

  12.   

    不过就程序本身而言 还是要看你的代码耦合 内聚 是否高效等说alert document.getElementById的,这些不是javascript。。js本身并没有dom对象如果是做网站的人员会发现大型化的网站分工是细分的,不可能让程序员去all in one
      

  13.   

    21F的朋友精通JS等,那我工作了不到十年的人只有自叹不如了放一段两年前写的一个ASPX中用的JS[code=JScript] <script language="JavaScript">
    function clickevent(i){
    var e=event.srcElement; 
    if(e.tagName!="TD")return;
    e=GetParentElement(e, "TR");
    if(e.rowIndex<=1)return;
    var ri=document.getElementById("rowi");
    var ti=document.getElementById("tmpi");
    ti.value=i;
    ri.value=e.rowIndex;
    if(document.getElementById("leftcontainer"+i).style.display=="none"){
    document.getElementById("leftwrap"+i).style.top=42;
    document.getElementById("leftwrap"+i).style.left=10;
    if(i==0){
    getzj()
    leftslider0.show();
    }
    else{
    getjh()
    leftslider1.show();
    }
    }
    } function addrow(i){
    var obj=document.getElementById("table1");
    var newRow;
    newRow=obj.insertRow(obj.rows.length);
    newRow.height="20";
    var j;
    for(j=0; j < obj.rows(1).cells.length; j++) {
    var c =newRow.insertCell(j);
    c.innerText="";
    }
    }
    function PFJS(){
    var obj=document.getElementById("table0");
    if(obj.rows.length>2){
    var fz=0;
    var fm=0;
    for(var i=2;i<obj.rows.length;i++){
    if(obj.rows(i).cells(5).innerText!="" && obj.rows(i).cells(6).innerText!="" && obj.rows(i).cells(7).innerText!=""){
    fz+=obj.rows(i).cells(5).innerText*obj.rows(i).cells(6).innerText+(obj.rows(i).cells(7).innerText-0);
    fm+=10*obj.rows(i).cells(6).innerText;
    }
    }
    if(fm!=0){
    document.getElementById("PJ").value=FormatNumber(fz/fm*100,1);
    }
    }
    else{
    document.getElementById("PJ").value="100";
    }
    }
      

  14.   

     
    <script language="JavaScript"> 
    function clickevent(i){ 
    var e=event.srcElement; 
    if(e.tagName!="TD")return; 
    e=GetParentElement(e, "TR"); 
    if(e.rowIndex <=1)return; 
    var ri=document.getElementById("rowi"); 
    var ti=document.getElementById("tmpi"); 
    ti.value=i; 
    ri.value=e.rowIndex; 
    if(document.getElementById("leftcontainer"+i).style.display=="none"){ 
    document.getElementById("leftwrap"+i).style.top=42; 
    document.getElementById("leftwrap"+i).style.left=10; 
    if(i==0){ 
    getzj() 
    leftslider0.show(); 

    else{ 
    getjh() 
    leftslider1.show(); 


    } function addrow(i){ 
    var obj=document.getElementById("table1"); 
    var newRow; 
    newRow=obj.insertRow(obj.rows.length); 
    newRow.height="20"; 
    var j; 
    for(j=0; j < obj.rows(1).cells.length; j++) { 
    var c =newRow.insertCell(j); 
    c.innerText=""; 


    function PFJS(){ 
    var obj=document.getElementById("table0"); 
    if(obj.rows.length>2){ 
    var fz=0; 
    var fm=0; 
    for(var i=2;i <obj.rows.length;i++){ 
    if(obj.rows(i).cells(5).innerText!="" && obj.rows(i).cells(6).innerText!="" && obj.rows(i).cells(7).innerText!=""){ 
    fz+=obj.rows(i).cells(5).innerText*obj.rows(i).cells(6).innerText+(obj.rows(i).cells(7).innerText-0); 
    fm+=10*obj.rows(i).cells(6).innerText; 


    if(fm!=0){ 
    document.getElementById("PJ").value=FormatNumber(fz/fm*100,1); 


    else{ 
    document.getElementById("PJ").value="100"; 


      

  15.   

     

    function zjadd(){
    var obj=document.getElementById("table0");
    var r=document.getElementById("rowi").value;
    r=r-0;
    obj.rows(r).cells(4).innerText=document.getElementById("zWCQK").value;
    obj.rows(r).cells(5).innerText=document.getElementById("zZL").value;
    obj.rows(r).cells(6).innerText=document.getElementById("zXZ").value;
    obj.rows(r).cells(7).innerText=document.getElementById("zWCSJ").value;
    obj.rows(r).cells(8).innerText=FormatNumber(document.getElementById("zZL").value*document.getElementById("zXZ").value+(document.getElementById("zWCSJ").value-0),1);
    obj.rows(r).cells(9).innerText=document.getElementById("zRe").value;
    obj.rows(r).cells(10).innerText=document.getElementById("zState").value;
    leftslider0.hide();
    }
    function getzj(){
    editorSubmit();
    var obj=document.getElementById("table0");
    var r=document.getElementById("rowi").value;
    r=r-0;
    document.getElementById("zCate").innerText=obj.rows(r).cells(0).innerText;
    document.getElementById("zNums").innerText=obj.rows(r).cells(1).innerText;
    document.getElementById("zNR").innerHTML=obj.rows(r).cells(2).innerHTML;
    document.getElementById("zSJ").innerText=obj.rows(r).cells(3).innerText;
    document.getElementById("zWCQK").innerText=obj.rows(r).cells(4).innerText;
    document.getElementById("zZL").value=obj.rows(r).cells(5).innerText;
    document.getElementById("zXZ").value=obj.rows(r).cells(6).innerText;
    document.getElementById("zWCSJ").value=obj.rows(r).cells(7).innerText;
    document.getElementById("zRe").value=obj.rows(r).cells(9).innerText;
    document.getElementById("zState").value=obj.rows(r).cells(10).innerText;
    }

    function jhadd(){
    editorSubmit();
    var obj=document.getElementById("table1");
    var r=document.getElementById("rowi").value;
    r=r-0;
    obj.rows(r).cells(0).innerText=document.getElementById("jCate").value;
    obj.rows(r).cells(1).innerText=document.getElementById("jNums").value;
    obj.rows(r).cells(2).innerHTML=document.getElementById("content").value;
    obj.rows(r).cells(3).innerText=document.getElementById("jSJ").value;
    obj.rows(r).cells(4).innerText=document.getElementById("jPH").value;
    obj.rows(r).cells(5).innerText=document.getElementById("jRe").value;
    obj.rows(r).cells(6).innerText=document.getElementById("jState").value;
    leftslider1.hide();
    }
    function getjh(){
    editorSubmit();
    var obj=document.getElementById("table1");
    var r=document.getElementById("rowi").value;
    r=r-0;
    document.getElementById("jCate").value=obj.rows(r).cells(0).innerText;
    document.getElementById("jNums").value=obj.rows(r).cells(1).innerText;
    document.getElementById("content").value=obj.rows(r).cells(2).innerHTML;
    WriteFullHtml(document.frames("EditorForm").document, document.getElementsByName(eval(myobjname).hiddenName)[0].value);
    document.getElementById("jSJ").value=obj.rows(r).cells(3).innerText;
    document.getElementById("jPH").value=obj.rows(r).cells(4).innerText;
    document.getElementById("jRe").value=obj.rows(r).cells(5).innerText;
    document.getElementById("jState").value=obj.rows(r).cells(6).innerText;
    } function callServer() {
    var u="Aj";
    var url = u+"ax.as"+"px";
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = deal_result();
    xmlHttp.send(null);
    }
    function deal_result() {
    if (xmlHttp.readyState < 4) {
    window.status ="检测中...";
    }
    if (xmlHttp.readyState == 4) {
    var response = xmlHttp.responseText;
    if (response=='netok'){
    return true;
    }
    else{
    window.status = "";
    return false;
    }
    }
    }
    function Save(){
    if (callServer){
    var obj=document.getElementById("table0");
    var obj2=document.getElementById("table1");
    var qid=web.MonthAdd.QSchk(document.getElementById("uid").value,document.getElementById("oid").value).value;
    if(qid!=-1){
    if (document.getElementById("PJ").value!="" && obj2.rows(2).cells(0).innerText!=""){
    var i;
    try {
    for(i=2;i<obj.rows.length;i++){
    if(obj.rows(i).cells(0).innerText!="" && obj.rows(i).cells(1).innerText!=""){
    web.MonthAdd.tmpZJInsert(qid,obj.rows(i).cells(0).innerText,obj.rows(i).cells(1).innerText,obj.rows(i).cells(2).innerHTML,obj.rows(i).cells(3).innerText,obj.rows(i).cells(4).innerText,obj.rows(i).cells(5).innerText,obj.rows(i).cells(6).innerText,obj.rows(i).cells(7).innerText,obj.rows(i).cells(9).innerText,obj.rows(i).cells(10).innerText);
    }
    }
    var state="";
    if(document.all.item("KNS").checked==true){
    state+="1,";
    }
    else{
    state+="0,";
    }
    if(document.all.item("DSS").checked==true){
    state+="1,";
    }
    else{
    state+="0,";
    }
    if(document.all.item("JYS").checked==true){
    state+="1,";
    }
    else{
    state+="0,";
    }
    if(document.all.item("LSRWS").checked==true){
    state+="1";
    }
    else{
    state+="0";
    }
    web.MonthAdd.tmpZJBC(qid,document.all.item("KN").value,document.all.item("DS").value,document.all.item("JY").value,document.all.item("LSRW").value,document.all.item("PJ").value,state); for(i=2;i<obj2.rows.length;i++){
    if(obj2.rows(i).cells(0).innerText!="" && obj2.rows(i).cells(2).innerHTML!=""){
    web.MonthAdd.tmpJHInsert(qid,obj2.rows(i).cells(0).innerText,obj2.rows(i).cells(1).innerText,obj2.rows(i).cells(2).innerHTML,obj2.rows(i).cells(3).innerText,obj2.rows(i).cells(4).innerText,obj2.rows(i).cells(5).innerText,obj2.rows(i).cells(6).innerText);
    }
    }
    alert("!");
    document.all.item("BtnOK").disabled=true;
    }
    catch(e){
    alert("。!");
    }
    }
    else{
    alert("!");
    }
    }
    else{
    alert("。。!");
    }
    }
    }
    function FormatNumber(srcStr,nAfterDot){ 
          var srcStr,nAfterDot; 
          var resultStr,nTen; 
          srcStr = ""+srcStr+""; 
          strLen = srcStr.length; 
          dotPos = srcStr.indexOf(".",0); 
          if (dotPos == -1){ 
            resultStr = srcStr+"."; 
            for (i=0;i<nAfterDot;i++){ 
              resultStr = resultStr+"0"; 
            } 
            return resultStr; 
          } 
          else{ 
            if ((strLen - dotPos - 1) >= nAfterDot){ 
              nAfter = dotPos + nAfterDot + 1; 
              nTen =1; 
              for(j=0;j<nAfterDot;j++){ 
                nTen = nTen*10; 
              } 
              resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen; 
              return resultStr; 
            } 
            else{ 
              resultStr = srcStr; 
              for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){ 
                resultStr = resultStr+"0"; 
              } 
              return resultStr; 
            } 
          } 
    }
    </script>
      

  16.   

    to liujiayu10 您的这个代码要都这么写的话,只能说确实很junk无意冒犯,不过确实是这样
      

  17.   

    JavaScript 中的框架JQuer啦,很好用的,还可以用于Ajax
      

  18.   

    ((function(){
        var a="1234";
        return function(t){
            alert(t+a);
        }
    })())("hello"); 闭包么.  51js上面 研究希奇古怪写法的人可是不少.这两年出的几本新书里 貌似都有这些个介绍了. 
      

  19.   

    javascript 掌握一般,改改fckeditor,是没问题了。能把JavaScript做到面向对象,你的水平就到瓶颈了,就差思想了。// Method: loadToolbarSet()
    // Description: Loads a toobar buttons set from an array inside the Toolbar holder.
    // Author: FredCK
    // Editor:fanliang11
    function loadToolbarSet()
    {
    var sToolBarSet = URLParams["Toolbar"] == null ? "Default" : URLParams["Toolbar"] ;
        var sCanUpload= ( URLParams['Upload'] == 'true' );//Editor:fanliang11
    // FredCK: Toobar holder (DIV)
    var oToolbarHolder = document.getElementById("divToolbar") ;
    var oToolbar = new TBToolbar() ;
    oToolbar.LoadButtonsSet( sToolBarSet ) ;
    if(!sCanUpload)
    {
        var attachId= IndexArray(oToolbar.Bands.Array[1].Items.Array, "upload",0);//Editor:fanliang11
        RemoveArray(oToolbar.Bands.Array[1].Items.Array,attachId);//Editor:fanliang11
    }
    oToolbarHolder.innerHTML = oToolbar.GetHTML() ;
    }//Method:Index
    //Description:Add The name of Method is "Index" for Array Method
    //Author:fanliang11
     function  IndexArray(arrayitem,item, i){ //判断Array的原型是否已作indexOf方法的扩展
      i || (i = 0); //初始化起步查询的下标,比较奇特的写法。
      var length = arrayitem.length;
      if (i < 0) i = length + i; // 如i为负数,则从数组末端开始。
      for (; i < length; i++)
        if (arrayitem[i].Name === item) return i;  // 使用全等于(===)判断符
      return -1;
    };//Method:remove
    ////Description: Add The name of Method is "remove" for Array Method.
    //Author:fanliang11
    function RemoveArray(array,attachId)
    {
        for(var i=0,n=0;i<array.length;i++)
        {
            if(array[i]!=attachId)
            {
                array[n++]=array[i]
            }
        }
        array.length -= 1;
    }
      

  20.   

    c/s能做到什么地步,我在b/s能做到什么地步,当然我接触asp.net比较久了
      

  21.   

    js是可以研究得很深的,但是我现在是够用为准。
    我只研究怎样实现功能,不研究复杂的理论上的东西,
    用jQuery已经实现了我需要的所有功能。
      

  22.   

    俺就会
    alert.. 
    document.getElementById
    这2个。。惭愧啊
      

  23.   

    我也只会alert;o(∩_∩)o...哈哈
      

  24.   

    对于非界面工程师来说通常并不需要了解太多js。
    实际上对于我所知道的传统程序员来说,基本上这些东西只限了解,会用,并不要求精通,因为他基本不算程序的核心,他是一种锦上添花的东西,而不是雪中送炭滴东西。
    呵呵,并没有多少公司要求非要用js完成,用js多数是在项目后期美化和完善用户体验,但是核心功能绝不在js和,就算现在用js用的比较多的google,如果核心功能都没完成,那么他的js又从那里出呢??google talk,goolge map,gmail如果没有完善的后台核心,你认为他的js又是如何写出来滴
      

  25.   

    就像我现在的公司,我们初期的web项目,任然还是用传统的table,td,tr构建,只有原型通过了,功能上没啥改变了,我们才会交给界面设计部门,让他们去做web2.0的优化css,div,js是他们的事情,我们不管。(很奇怪的事情,按道理界面交互功能应该一早就应该出来滴,实际不是,做界面滴通常不理会写代码滴,所以你他们一早就来给界面定型是件头痛滴事情,他们完全不会整理功能和设计交互,反到是我们这些程序员更会交互设计)
      

  26.   

    (function(){var a="1234";return (function(t){alert(t+a);})("hello")})(); 
    匿名方法 不是很懂 但是我能改 
      

  27.   

    (function(t){alert(t);return function(s){alert(t+s)}})("cs")(" t+s");
    变异 已经自行了解了
      

  28.   

    jquery
    prototype
    javascript
    都用过点点
      

  29.   

    那要看这人没有有关注JS了,工作了N年,对JS,CSS还是很生疏的WEB程序员大有人在。
    其实JS跟普通的开发语言一样的,只要系统的看一遍教程,写JS代码就很简单多了,半懂不懂的,寸步难行。
      

  30.   

    放个一年前的代码:自己的运行库Runtime.js就不放了System.StyleSheets.add("css/tabControl.css");
    System.Scripts.add(System.Scripts.paths + "UIBase.js");
    if(System==null)var System={};
    if(System.UI==null)System.UI={};System.UI.tabControl = function(){
    this.classType = "System.UI.tabControl";
    Class.initialize.apply(this,arguments);
    }
    System.UI.tabControl.css = {
    TAB_CONTROL:"tabcontrol",
    TAB_PANEL:"tab-panel",
    TAB_HEAD:"tab-header",
    TAB_SCROLL:"tab-scroll",
    TAB_BUTTON:"tab-tab",
    SCROLL_LEFT:"tab-sl",
    SCROLL_RIGHT:"tab-sr",
    TAB:"tab-tab",
    TAB_SELECTED:"tab-tab1",
    TAB_BACKGROUND:"tab-bg",
    TAB_BACKGROUND_LEFT:"tab-bl",
    TAB_BACKGROUND_RIGHT:"tab-br",
    TAB_TITLE:"tab-bt",
    TAB_PAGEFIELD:"tab-pagefield",
    TAB_PAGE:"tab-page",
    TAB_CLOSEBUTTON:"tab-bc"
    }System.UI.tabControl.prototype = {
    initialize:function(_container,o)
    {
    this.container = _container;
    this.tabs = [];
    this.selectedTab = null;
    this.options = Object.extend({
    allowClose:false,
    width:600,
    height:400,
    scrollSpeedLevel:3
    },o)
    if(this.container==null)return;
    System.UI.elementInit.apply(this);
    },
    initElement:function()
    {
    this.mainObj = $C("DIV");
    this.panel = $C("div");
    this.header = $C("DIV");
    this.tabsField = $C("ul");
    this.pageField = $C("div");
    this.leftButton = $C("div");
    this.rightButton = $C("div");
    with(this.mainObj)
    {
    appendChild(this.panel);
    appendChild(this.pageField);
    }
    with(this.panel)
    {
    appendChild(this.leftButton);
    appendChild(this.rightButton);
    appendChild(this.header);
    }
    this.header.appendChild(this.tabsField);
    this.container.appendChild(this.mainObj);
    },
    setElement:function()
    {
    var css = System.UI.tabControl.css;
    this.pageField.className = css.TAB_PAGEFIELD;
    this.panel.className = css.TAB_PANEL;
    this.mainObj.className = css.TAB_CONTROL;
    this.header.className = css.TAB_HEAD;
    this.tabsField.className = css.TAB_SCROLL;
    this.leftButton.className = css.SCROLL_LEFT;
    this.rightButton.className = css.SCROLL_RIGHT;
    this.width(this.options.width);
    this.height(this.options.height);
    this.resetScrollBar();
    },
    initEvent:function()
    {
    var self = this;
    this.leftButton.onclick = function(){self.scrollLeft();}
    this.rightButton.onclick = function(){self.scrollRight();}
    this.panel.onselectstart = function(){return false;}
    },
    killEvent:function()
    {
    this.panel.onselectstart = this.leftButton.onclick = this.rightButton.onclick = null;
    },
    scrollLeft:function(step)
    {
    step = parseInt(parseNum(step)) || 1;
    step--;
    var leftlimit = this.header.scrollLeft;
    var arr = [];
    for(var i=this.tabs.length-1;i>=0;i--)
    {
    if(this.tabs[i].tabObj.offsetLeft<leftlimit)
    arr[arr.length] = this.tabs[i];
    }
    step = step<arr.length?step:(arr.length-1);
    this.scrollTo(arr[step]);
    },
    scrollRight:function(step)
    {
    step = parseInt(parseNum(step)) || 1;
    step--;
    var rightlimit = this.header.scrollLeft + this.header.clientWidth;
    var arr = [];
    for(var i=0,l=this.tabs.length;i<l;i++)
    if(this.tabs[i].tabObj.offsetLeft + this.tabs[i].tabObj.offsetWidth > rightlimit)
    arr[arr.length] = this.tabs[i];
    step = step<arr.length?step:(arr.length-1);
    this.scrollTo(arr[step]);
    },
    scrollTo:function(obj)
    {
    if(obj && obj.classType=="System.UI.tabPage")
    {
    obj = obj.tabObj;
    if(obj.offsetLeft < this.header.scrollLeft)
    this.scroll(obj.offsetLeft - 3);
    else if(obj.offsetLeft + obj.offsetWidth > this.header.scrollLeft + this.header.clientWidth)
    this.scroll(obj.offsetLeft + obj.offsetWidth - this.header.clientWidth + 3)
    }
    },
    scroll:function(limit)
    {
    var self = this;
    var direct = this.header.scrollLeft<limit?1:-1;
    var ts;
    var move = function(){
    var left = self.header.scrollLeft + ((Math.abs(self.header.scrollLeft-limit)>>self.options.scrollSpeedLevel)*direct || direct);
    if((left-limit)*direct<=0)
    {
    self.header.scrollLeft = left;
    ts = setTimeout(move,10);
    }
    else
    {
    self.header.scrollLeft = limit;
    self.fireEvent("onscroll");
    }
    }
    move();
    },
    unload:function()
    {
    this.mainObj.parentNode.removeChild(this.mainObj);
    System.killInstance(this);
    this.killEvent();
    for(var o in this)delete this[o];
    },
    addTab:function(o)
    {
    var os = {closeAble:this.options.allowClose}
    var ss = this.tabs[this.tabs.length] = new System.UI.tabPage(this,Object.extend(os,o));
    this.resetHeader();
    if(this.selectedTab==null && this.tabs.length>0)this.tabs[0].select();
    this.resetScrollBar();
    this.fireEvent("onaddtab",ss);
    return ss;
    },
    removeTab:function(o)
    {
    switch(typeof(o))
    {
    case "number":
    o = this.tabs[parseInt(o)];
    case "object":
    var index = this.tabs.indexOf(o)
    if(o && index>-1)
    {
    o.fireEvent("onclose");
    this.fireEvent("onremovetab",o);
    o.unload();
    if(index>0)index--;
    if(this.selectedTab==o)this.selectedTab = null;
    if(this.selectedTab==null && this.tabs.length>0)this.tabs[index].select();
    this.resetScrollBar();
    }
    break;
    }
    },
    resetHeader:function()
    {
    var height = this.tabsField.firstChild?this.tabsField.firstChild.offsetHeight:2;
    this.leftButton.style.height = this.rightButton.style.height = (height+1) + "px";
    this.tabsField.style.height = height + "px";
    },
    resetScrollBar:function()
    {
    var last = this.tabs[this.tabs.length-1];
    if(last && last.tabObj.offsetLeft + last.tabObj.offsetWidth > this.header.clientWidth)
    {
    this.leftButton.style.display = this.rightButton.style.display = "block";
    this.header.style.marginLeft = this.header.style.marginRight = "";
    }
    else
    {
    this.header.scrollLeft = 0;
    this.leftButton.style.display = this.rightButton.style.display = "none";
    this.header.style.marginLeft = this.header.style.marginRight = "0px";
    }
    this.resetWidth();
    },
    tabChange:function(tab)
    {
    if(this.selectedTab!=tab)
    {
    if(this.selectedTab)this.selectedTab.blur();
    tab.focus();
    this.fireEvent("onchange",{oldTab:this.selectedTab,newTab:tab});
    this.selectedTab = tab;
    tab.fireEvent("onselected");
    }
    },
    resetWidth:function()
    {
    this.panel.style.width = this.pageField.style.width = this.options.width + "px";
    this.header.style.width = (this.options.width - this.leftButton.offsetWidth - this.rightButton.offsetWidth) + "px";
    },
    width:function(value)
    {
    if(value!=null)
    {
    value = parseInt(parseNum(value));
    this.options.width = value<140?140:value;
    this.resetWidth();
    this.fireEvent("onresize");
    }
    return this.options.width;
    },
    height:function(value)
    {
    if(value!=null)
    {
    value = parseInt(parseNum(value));
    this.options.height = value<60?60:value;
    value = value - this.panel.offsetHeight;
    this.pageField.style.height = value + "px";
    this.fireEvent("onresize");
    }
    return this.options.height;
    },
    allowClose:function(value)
    {
    if(value!=null)
    {
    this.options.allowClose = value = !!value;
    for(var i=0,l=this.tabs.length;i<l;i++)
    this.tabs[i].closeAble(value);
    }
    return this.options.allowClose;
    }
    }
      

  31.   

    System.UI.tabPage = function()
    {
    this.classType = "System.UI.tabPage";
    Class.initialize.apply(this,arguments);
    }
    System.UI.tabPage.prototype = {
    initialize:function(_parent,o)
    {
    this.parent = _parent;
    this.selected = false;
    this.options = {
    title:"New TAB",
    width:80,
    closeAble:false
    };
    Object.extend(this.options,o);
    System.UI.elementInit.apply(this);
    },
    initElement:function()
    {
    this.field = $C("DIV");
    this.tabObj = $C("li");
    this.closeButton = this.tabObj.appendChild($C("div"));
    this.bgRight = this.tabObj.appendChild($C("A"));
    this.bgLeft = this.bgRight.appendChild($C("DIV"));
    this.bgCenter = this.bgLeft.appendChild($C("DIV"));
    this.titleObj = this.bgCenter.appendChild($C("span"));
    this.parent.tabsField.appendChild(this.tabObj);
    this.parent.pageField.appendChild(this.field);
    },
    scrollToView:function(){this.parent.scrollTo(this);},
    setElement:function()
    {
    var css = System.UI.tabControl.css;
    this.bgRight.href="javascript:;";
    this.tabObj.className = css.TAB;
    this.bgRight.className = css.TAB_BACKGROUND_RIGHT;
    this.bgLeft.className = css.TAB_BACKGROUND_LEFT;
    this.bgCenter.className = css.TAB_BACKGROUND;
    this.closeButton.className = css.TAB_CLOSEBUTTON;
    this.titleObj.className = css.TAB_TITLE;
    this.field.className = css.TAB_PAGE;
    this.field.style.display = "none";
    this.title(this.options.title);
    this.width(this.options.width);
    this.closeAble(this.options.closeAble);
    },
    initEvent:function()
    {
    var self = this;
    this.closeButton.onclick = function(){self.parent.removeTab(self);Browser.Event.cancelBubble(true);}
    this.tabObj.onclick = function(){self.select();}
    },
    killEvent:function()
    {
    this.closeButton.onclick = this.bgRight.onclick = this.tabObj.onclick = null;
    },
    title:function(value)
    {
    if(typeof(value)=="string")
    {
    this.titleObj.textContent = this.titleObj.innerText = 
    this.options.title = value;
    this.fireEvent("ontitlechange",value);
    }
    return this.options.title;
    },
    width:function(value)
    {
    if(value!=null)
    {
    value = parseInt(parseNum(value));
    this.bgCenter.style.width = this.options.width = value?(value+"px"):"auto";
    }
    return this.options.width;
    },
    select:function(){this.parent.tabChange(this);},
    focus:function()
    {
    this.selected = true;
    this.scrollToView();
    this.tabObj.className = System.UI.tabControl.css.TAB_SELECTED;
    this.display(true);
    this.fireEvent("onfocus");
    },
    blur:function()
    {
    this.selected = false;
    this.tabObj.className = System.UI.tabControl.css.TAB;
    this.display(false);
    this.fireEvent("onblur");
    },
    display:function(value)
    {
    if(value!=null)
    {
    this._display = !!value;
    this.field.style.display = this._display?"block":"none";
    }
    return this._display;
    },
    unload:function()
    {
    this.parent.tabs.Remove(this);
    this.tabObj.parentNode.removeChild(this.tabObj);
    this.field.parentNode.removeChild(this.field);
    System.killInstance(this);
    this.killEvent();
    for(o in this)delete this[o];
    },
    closeAble:function(value)
    {
    if(value!=null)
    {
    this.options.closeAble = value = !!value;
    this.bgLeft.style.paddingRight = value?"19px":"";
    this.closeButton.style.display = value?"":"none";
    }
    return this.options.closeAble;
    }
    }