最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

原生js編寫(xiě)基于面向?qū)ο蟮姆猪?yè)組件

 更新時(shí)間:2021年09月26日 11:23:55   作者:chen173097010  
這篇文章主要為大家詳細(xì)介紹了原生js編寫(xiě)基于面向?qū)ο蟮姆猪?yè)組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了一個(gè)基于面向?qū)ο蟮姆猪?yè)組件的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下

文字表達(dá)有限,直接上代碼了

<!DOCTYPE html> 
<html> 
<head> 
 <meta charset="UTF-8"> 
 <title>一個(gè)基于面向?qū)ο蟮姆猪?yè)組件</title> 
 <style> 
 html,body{padding:0;margin:0;} 
 p{padding:0;margin:0;} 
 a{text-decoration: none} 
 .Paging{overflow: hidden;} 
 .Paging-item{float: left;padding: 10px 15px;background: #4caf50;color: #fff;margin-left: 5px;} 
 .Paging-item-active{background: #ff568e;} 
 </style> 
</head> 
<body> 
 <div id="page"></div> 
</body> 
<script> 
 //分頁(yè)組件類 
 function Paging(container,opt){ 
 //自定義事件 
 this.eventHandlers={}; 
 //默認(rèn)設(shè)置 
 this.config={ 
  nowNum: 1, 
  allNum: 10, 
  callback: function(){} 
 } 
 if(opt){ 
  this.extend(this.config,opt); 
 } 
 //外層容器 
 this.Box= null; 
 //渲染組件 
 this.render(container); 
 } 
 Paging.prototype={ 
 constructor: Paging, 
 /*綁定自定義事件*/ 
 on: function(eventType,eventHandler){ 
  if(typeof this.eventHandlers[eventType] === 'undefined'){ 
  this.eventHandlers[eventType]= []; 
  } 
  this.eventHandlers[eventType].push(eventHandler); 
 }, 
 /*觸發(fā)自定義事件*/ 
 fire: function(eventType){ 
  if( this.eventHandlers[eventType] instanceof Array){ 
  var len= this.eventHandlers[eventType].length; 
  for(var i=0;i<len;i++){ 
   this.eventHandlers[eventType][i](); 
  } 
  } 
  
 }, 
 /*渲染UI結(jié)構(gòu)*/ 
 renderUI: function(){ 
  this.Box= document.createElement('div'); 
  this.Box.className= 'Paging'; 
  var nowNum= this.config.nowNum; 
  var allNum= this.config.allNum; 
  //當(dāng)前頁(yè)大于或等于4,第一頁(yè)才能隱藏,總數(shù)大于5才能顯示首頁(yè) 
  if (nowNum >=4 && allNum >=6) { 
  var pageA= document.createElement('a'); 
  pageA.className= 'Paging-item Paging-item-start' 
  pageA.href='#1'; 
  pageA.innerHTML= '首頁(yè)'; 
  this.Box.appendChild(pageA); 
  }; 
  //當(dāng)前頁(yè)只要不是第一頁(yè)就顯示上一頁(yè) 
  if(nowNum>=2){ 
  var pageA= document.createElement('a'); 
  pageA.className= 'Paging-item Paging-item-pre' 
  pageA.href='#'+ (nowNum-1); 
  pageA.innerHTML= '上一頁(yè)'; 
  this.Box.appendChild(pageA); 
  } 
  
  //只有5頁(yè)時(shí) 
  if(allNum<=5){ 
   
  for(var i=1;i<=allNum;i++){ 
   var pageA= document.createElement('a'); 
   pageA.className= 'Paging-item' 
   pageA.href= '#'+ i; 
   if(nowNum==i){ 
   pageA.className= 'Paging-item Paging-item-active' 
   pageA.innerHTML=i; 
   }else{ 
   // pageA.innerHTML='['+ i +']'; 
   pageA.innerHTML=i; 
   }   
   this.Box.appendChild(pageA); 
  } 
   
  }else{ 
  for(var i=1;i<=5;i++){ 
   var pageA= document.createElement('a'); 
   pageA.className= 'Paging-item' 
   pageA.href= '#'+ (nowNum-3+i); 
   //對(duì)當(dāng)前頁(yè)為前2頁(yè)的處理 
   if(nowNum === 1 || nowNum === 2){ 
   pageA.href= '#'+ i; 
   if(nowNum === i){ 
    pageA.className= 'Paging-item Paging-item-active' 
    pageA.innerHTML= i; 
   }else{ 
    // pageA.innerHTML= '['+i+']'; 
    pageA.innerHTML= i; 
   } 
   }/*對(duì)當(dāng)前頁(yè)為后2頁(yè)的處理*/else if((allNum-nowNum) ===0 || (allNum-nowNum) === 1){ 
   /*== 
    <a href="">[6]</a> 
    <a href="">[7]</a> 
    <a href="">[8]</a> 
    <a href="">[9]</a> 
    <a href="">10</a> 
   ==*/ 
   pageA.href= '#'+ ((allNum-5)+i); 
   if((allNum-nowNum) ===0 && i===5){ 
    pageA.className= 'Paging-item Paging-item-active' 
    pageA.innerHTML=((allNum-5)+i); 
   }else if((allNum-nowNum) ===1 && i===4){ 
    pageA.className= 'Paging-item Paging-item-active' 
    pageA.innerHTML=((allNum-5)+i); 
   }else{ 
    // pageA.innerHTML= '['+ ((allNum-5)+i) +']' 
    pageA.innerHTML= ((allNum-5)+i) 
   } 
   }else{ 
   if(nowNum === (nowNum-3+i)){ 
    pageA.className= 'Paging-item Paging-item-active' 
    pageA.innerHTML= (nowNum-3+i); 
   }else{ 
    // pageA.innerHTML= '['+ (nowNum-3+i) +']' 
    pageA.innerHTML= (nowNum-3+i) 
   } 
   } 
   
   this.Box.appendChild(pageA); 
  } 
  } 
 
  if((allNum-nowNum) >=1){ 
  var pageA= document.createElement('a'); 
  pageA.className= 'Paging-item Paging-item-next' 
  pageA.href='#'+ (nowNum+1); 
  pageA.innerHTML= '下一頁(yè)'; 
  this.Box.appendChild(pageA); 
  } 
  //選擇7為標(biāo)準(zhǔn),或7以下才能顯示 
  if((allNum-nowNum) >= 3 && allNum >= 6){ 
  var pageA= document.createElement('a'); 
  pageA.className= 'Paging-item Paging-item-end' 
  pageA.href='#'+allNum; 
  pageA.innerHTML= '尾頁(yè)'; 
  this.Box.appendChild(pageA); 
  } 
  
  
 
 }, 
 /*為UI綁定事件*/ 
 bindUI: function(){ 
  var self= this; 
  this.config.callback(this.config.nowNum,this.config.allNum); 
  //利用事件委托 
  self.Box.onclick= function(e){ 
  var e= e || window.event; 
  var target= e.target || e.srcElement; 
  if(typeof e.target.getAttribute('href') === 'string'){ 
   var nowNum= parseInt(target.getAttribute('href').substring(1)); 
   // console.log(nowNum); 
   self.Box.innerHTML= ''; 
   new Paging(null,{ 
   nowNum: nowNum, 
   allNum: self.config.allNum, 
   callback: self.config.callback 
   }) 
  } 
  return false; 
  } 
 }, 
 /*渲染UI*/ 
 render: function(container){ 
  this.renderUI(); 
  this.bindUI(); 
  if(container){ 
  var con= document.getElementById(container); 
  con.appendChild(this.Box); 
  }else{ 
  document.body.appendChild(this.Box); 
  } 
 }, 
 /*繼承對(duì)象*/ 
 extend: function(obj1,obj2){ 
  for(attr in obj2){ 
  obj1[attr]= obj2[attr]; 
  } 
 } 
 } 
 //初始化調(diào)用 
 var page= new Paging(null,{ 
 nowNum: 1, 
 allNum: 10, 
 callback: function(nowNum,allNum){ 
  console.log('當(dāng)前頁(yè):'+nowNum) 
  console.log('總頁(yè):'+allNum) 
 } 
 }); 
</script> 
</html> 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳細(xì)聊聊對(duì)async/await的理解和用法

    詳細(xì)聊聊對(duì)async/await的理解和用法

    隨著Nodev7的發(fā)布,越來(lái)越多的人開(kāi)始研究據(jù)說(shuō)是異步編程終級(jí)解決方案的 async/await,這篇文章主要給大家介紹了關(guān)于對(duì)async/await的理解和用法,文中通過(guò)實(shí)例代碼介紹的介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • JS控制偽元素的方法匯總

    JS控制偽元素的方法匯總

    本文給大家介紹js控制偽元素的方法匯總,本文涉及到獲取偽元素屬性值的方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr)

    JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr)

    這篇文章主要介紹了JS數(shù)組降維的實(shí)現(xiàn)Array.prototype.concat.apply([], arr),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • JavaScript簡(jiǎn)單生成 N~M 之間隨機(jī)數(shù)的方法

    JavaScript簡(jiǎn)單生成 N~M 之間隨機(jī)數(shù)的方法

    這篇文章主要介紹了JavaScript簡(jiǎn)單生成 N~M 之間隨機(jī)數(shù)的方法,結(jié)合自定義函數(shù)分析了JS生成固定區(qū)間內(nèi)隨機(jī)數(shù)的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-01-01
  • javascript獲取時(shí)間戳的5種方法詳解

    javascript獲取時(shí)間戳的5種方法詳解

    這篇文章主要介紹了javascript獲取時(shí)間戳的5種方法詳解,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • bootstrap警告框使用方法解析

    bootstrap警告框使用方法解析

    這篇文章主要為大家詳細(xì)介紹了bootstrap警告框使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Bootstrap按鈕組簡(jiǎn)單實(shí)現(xiàn)代碼

    Bootstrap按鈕組簡(jiǎn)單實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Bootstrap按鈕組的簡(jiǎn)單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • JavaScript實(shí)現(xiàn)基礎(chǔ)排序算法的示例詳解

    JavaScript實(shí)現(xiàn)基礎(chǔ)排序算法的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)基礎(chǔ)排序算法,如:冒泡排序、選擇排序、插入排序和快速排序,感興趣的可以了解一下
    2022-06-06
  • 在JavaScript中監(jiān)聽(tīng)I(yíng)ME鍵盤(pán)輸入事件

    在JavaScript中監(jiān)聽(tīng)I(yíng)ME鍵盤(pán)輸入事件

    在 JavaScript 中監(jiān)聽(tīng)用戶的鍵盤(pán)輸入是很容易的事情,但用戶一旦使用了輸入法,問(wèn)題就變得復(fù)雜了。
    2011-05-05
  • 微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果

    微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)MUI數(shù)字輸入框效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

阿拉善左旗| 祁门县| 陕西省| 布尔津县| 项城市| 沿河| 扶沟县| 新邵县| 陆良县| 桑日县| 武邑县| 邯郸县| 搜索| 鹰潭市| 灵武市| 东乌| 内丘县| 五指山市| 宁南县| 桑植县| 葫芦岛市| 鄂尔多斯市| 泉州市| 富平县| 石首市| 美姑县| 方山县| 平果县| 清水河县| 西充县| 大兴区| 金秀| 旬邑县| 五莲县| 交城县| 尚义县| 岱山县| 广宗县| 吴旗县| 工布江达县| 阆中市|