欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript組件開發(fā)完整示例

 更新時(shí)間:2015年12月15日 14:48:16   作者:hongweigg  
這篇文章主要介紹了JavaScript組件開發(fā)的方法,結(jié)合完整實(shí)例形式分析了組件的原理與實(shí)現(xiàn)技巧,代碼包含的詳盡的注釋,便于理解,需要的朋友可以參考下

本文實(shí)例講述了JavaScript組件開發(fā)的技巧。分享給大家供大家參考,具體如下:

使用JavaScript,按照面向?qū)ο蟮乃枷雭?lái)構(gòu)建組件。

現(xiàn)以構(gòu)建一個(gè)TAB組件為例。

從功能上講,組件包括可視部分和邏輯控制部分;從代碼結(jié)構(gòu)上講,組件包括代碼部分和資源部分(樣式、圖片等)。

組件的特點(diǎn):高內(nèi)聚,低耦合(不與其他代碼邏輯交叉,可以繼承,包含);封裝性(隱藏私有方法和變量);可重用性(可反復(fù)多次使用,用來(lái)組裝更復(fù)雜的應(yīng)用)。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JS 組件</title>
<style>
.TabControl{
 position:absolute;
}
.TabControl .tab-head{
 height:22px;width:100%;
/* border-left: solid 0px #e0e0e0;border-right: solid 0px #e0e0e0;border-top: solid 0px #e0e0e0;border-bottom: solid 1px #e0e0e0; */
 position:absolute;
 z-index:9;
}
.TabControl ul{
 position:absolute;
 top:2px;
 padding:0px;
 margin:0px;
 z-index:10;
}
.TabControl li{
 list-style:none; /* 將默認(rèn)的列表符號(hào)去掉 */
 padding-left:10px; padding-right:10px;
 margin:0; 
 float:left;
 border: solid 1px #e0e0e0;
 background-color:#ffffff;
 height:20px;
 cursor:default;
}
.TabControl li.selected{
 border-bottom: solid 1px #ffffff;border-top: solid 1px #ff0000;
 z-index:10;
}
.TabControl li.unselected{
 border-bottom: solid 1px #e0e0e0;border-top: solid 1px #e0e0e0;
 z-index:10;
}
.TabControl .pageSelected{
 position:absolute;
 display:block;
 border: solid 1px #e0e0e0; 
 width:100%;height:100%;
 z-index:1;
 top:23px;
}
.TabControl .pageUnSelected{
 display:none;
 border: solid 1px #e0e0e0; 
 width:100%;height:100%;
 z-index:1;
 top:23px;
}
</style>
</head>
<body>
<script lang="javascript">
 var TabControl = function(width, height){
  var me = this;
  //TAB控件容器,頭,列表
  var cbody,tabHead, ul;
  //最后選中的TAB頁(yè)
  var lastSelectedPage = 0;
  //TAB頁(yè)管理容器
  var pages = [];
  /**
   * 初始化函數(shù)
   * param{tabCount}, 創(chuàng)建tab頁(yè)的個(gè)數(shù)
   */
  me.init = function(tabCount){
   //創(chuàng)建TAB容器
   cbody = document.createElement("DIV");
   cbody.className = "TabControl";
   cbody.style.width = width || "400px";
   cbody.style.height = height || "300px";
   //創(chuàng)建TAB控件頭
   tabHead= document.createElement("DIV");
   tabHead.className = "tab-head";
   cbody.appendChild(tabHead);
   //創(chuàng)建TAB頭
   ul = document.createElement("UL");
   tabHead.appendChild(ul);
   //根據(jù)參數(shù)初始化TAB頁(yè),缺省創(chuàng)建2個(gè)TAB頁(yè)
   var tc = tabCount || 2;
   for(var i=0;i<tc;i++){
    me.insertPage(i,"tabPage" + i) 
   }
   //缺省選中第一頁(yè)
   me.selectPage(0); 
  }
  /**
   * 插入TAB頁(yè)
   * param{idx},插入位置
   * param{title},TAB頁(yè)標(biāo)題
   *
   */
  me.insertPage = function(idx,title){
   if(parseInt(idx)>=0){
     var li = document.createElement("LI");
     li.className = "unselected";
     li.innerText = title;
     var chd = ul.childNodes[idx];
     ul.insertBefore(li);
     li.onclick = function(){
      me.selectPage(getSelectedIndex(li));
     }
     //創(chuàng)建page
     var page = document.createElement("DIV");
     page.className = "pageUnSelected";
     pages.push(page);
     cbody.appendChild(page);
    }
  }
  /*
   * 內(nèi)部函數(shù)
   * 根據(jù)選中的對(duì)象,獲取對(duì)應(yīng)的TAB頁(yè)索引
   */
  function getSelectedIndex(li){
   var chd = ul.childNodes;
   for(var i=0;i<chd.length;i++){
    if(chd[i] == li){
     return i;
    }
   }
  }
  /**
   * 選中某頁(yè)
   * param{idx},選中頁(yè)的索引
   */
  me.selectPage = function(idx){
   if(parseInt(idx)>=0){
    var lis = ul.childNodes;
    alert(lastSelectedPage + ',' + idx);
    lis[lastSelectedPage].className = "unselected";
    lis[idx].className = "selected";
/*
    for(var i=0;i<lis.length;i++){
     if( i== idx){
      lis[i].className = "selected";
     } else{
      alert('B:'+ i + ',' + lis[idx].innerText);
      lis[i].className = "unselected";
     }
    }
*/
    //隱藏?zé)o需顯示的TAB頁(yè),顯示選中的TAB頁(yè)
    pages[lastSelectedPage].className = "pageUnSelected";
    pages[idx].className = "pageSelected";
    lastSelectedPage = idx;
   }
  }
  //在函數(shù)尾部調(diào)用初始化函數(shù)執(zhí)行初始化
  me.init();
  //最后返回DOM對(duì)象
  return cbody;
 }
 var tabControl = new TabControl();
 document.body.appendChild(tabControl);
</script>
</body>
</html>

最終效果如圖:

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js點(diǎn)擊頁(yè)面其它地方將某個(gè)顯示的DIV隱藏

    js點(diǎn)擊頁(yè)面其它地方將某個(gè)顯示的DIV隱藏

    今天一朋友問我 點(diǎn)擊一按鈕彈出一個(gè)DIV,然后要求點(diǎn)擊頁(yè)面其它地方隱藏這個(gè)DIV
    2012-07-07
  • javascript刪除字符串最后一個(gè)字符

    javascript刪除字符串最后一個(gè)字符

    需求是一個(gè)字符串,想刪除這個(gè)字符串最后一個(gè)字符,比如“1,2,3,4,5,”,刪除最后一個(gè)“,”用javascript怎么實(shí)現(xiàn)?下面給出三種方法
    2014-01-01
  • 如何通過非數(shù)字與字符的方式實(shí)現(xiàn)PHP WebShell詳解

    如何通過非數(shù)字與字符的方式實(shí)現(xiàn)PHP WebShell詳解

    這篇文章主要給大家介紹了關(guān)于如何通過非數(shù)字與字符的方式實(shí)現(xiàn)PHP WebShell的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • 高性能web開發(fā) 如何加載JS,JS應(yīng)該放在什么位置?

    高性能web開發(fā) 如何加載JS,JS應(yīng)該放在什么位置?

    所有瀏覽器在下載JS的時(shí)候,會(huì)阻止一切其他活動(dòng),比如其他資源的下載,內(nèi)容的呈現(xiàn)等等。至到JS下載、解析、執(zhí)行完畢后才開始繼續(xù)并行下載其他資源并呈現(xiàn)內(nèi)容。
    2010-05-05
  • Bootstrap布局方式詳解

    Bootstrap布局方式詳解

    這篇文章主要為大家詳細(xì)介紹了Bootstrap布局方式,分析了Bootstrap網(wǎng)格系統(tǒng)的各種特性,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 功能完善的小程序日歷組件的實(shí)現(xiàn)

    功能完善的小程序日歷組件的實(shí)現(xiàn)

    這篇文章主要介紹了功能完善的小程序日歷組件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 微信小程序之多列表的顯示和隱藏功能【附源碼】

    微信小程序之多列表的顯示和隱藏功能【附源碼】

    今天在項(xiàng)目碰到一個(gè)問題,之前在項(xiàng)目首頁(yè)實(shí)現(xiàn)單列表的顯示和隱藏,通過wx:if判斷就可實(shí)現(xiàn),現(xiàn)在要實(shí)現(xiàn)多列表的單項(xiàng)顯示和隱藏功能應(yīng)該如何實(shí)現(xiàn)呢?下面小編給大家?guī)?lái)了微信小程序之多列表的顯示和隱藏功能,感興趣的朋友一起看看吧
    2018-08-08
  • 精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)

    精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)

    這篇文章主要為大家分享了一個(gè)精彩的Bootstrap案例,涉及到了選項(xiàng)卡、柵格布局,關(guān)鍵重點(diǎn)在注釋,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 微信小程序用戶授權(quán)彈窗 拒絕時(shí)引導(dǎo)用戶重新授權(quán)實(shí)現(xiàn)

    微信小程序用戶授權(quán)彈窗 拒絕時(shí)引導(dǎo)用戶重新授權(quán)實(shí)現(xiàn)

    我們?cè)陂_發(fā)小程序時(shí),如果想獲取用戶信息,就需要獲取用的授權(quán),如果用戶誤點(diǎn)了拒絕授權(quán),我們?cè)趺礃尤フ_的引導(dǎo)用戶重新授權(quán)呢。今天就來(lái)給大家講講如果正確的引導(dǎo)用戶授權(quán),需要的朋友可以參考下
    2019-07-07
  • 小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件

    小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)圖片預(yù)覽裁剪插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論