整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          如何用JavaScript實(shí)現(xiàn)數(shù)組分頁(yè)?

          ello,大家好!今天要和大家分享一個(gè)非常實(shí)用的小技巧——如何在業(yè)務(wù)場(chǎng)景中使用JavaScript對(duì)數(shù)組進(jìn)行分頁(yè)展示。無(wú)論你是前端萌新,還是正在努力提升自己技能的小伙伴,這篇文章都會(huì)對(duì)你有所幫助哦!

          業(yè)務(wù)需求

          想象一下,我們正在開(kāi)發(fā)一個(gè)購(gòu)物網(wǎng)站,需要展示大量的商品數(shù)據(jù)。如果一下子展示太多,用戶(hù)體驗(yàn)肯定不好。這時(shí)候分頁(yè)展示就顯得尤為重要了!如何用JavaScript實(shí)現(xiàn)這一需求呢?別急,我們一步步來(lái)。

          JavaScript數(shù)組分頁(yè)的實(shí)現(xiàn)

          其實(shí),實(shí)現(xiàn)數(shù)組分頁(yè)非常簡(jiǎn)單。我們可以借助JavaScript的slice方法來(lái)達(dá)到目的。下面是具體的代碼示例:

          const arr = Array(100).fill().map((_, i) => i); // 創(chuàng)建一個(gè)包含100個(gè)元素的數(shù)組
          const paginate = (array, pageSize, pageNumber) => {
            return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
          };
          
          // 示例:分頁(yè)展示
          console.log(paginate(arr, 10, 1)); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
          console.log(paginate(arr, 10, 2)); // [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
          console.log(paginate(arr, 10, 3)); // [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

          代碼講解

          1. 創(chuàng)建數(shù)組:我們用Array(100).fill().map((_, i) => i)創(chuàng)建了一個(gè)包含100個(gè)元素的數(shù)組,每個(gè)元素的值等于它的索引。
          2. 定義分頁(yè)函數(shù)paginate函數(shù)接收三個(gè)參數(shù):
          • array:需要分頁(yè)的數(shù)組
          • pageSize:每頁(yè)展示的元素?cái)?shù)量
          • pageNumber:當(dāng)前頁(yè)碼,從1開(kāi)始計(jì)數(shù)
          1. 實(shí)現(xiàn)分頁(yè)邏輯:通過(guò)slice方法,根據(jù)pageNumberpageSize計(jì)算出要返回的數(shù)組片段。具體來(lái)說(shuō),第一個(gè)參數(shù)是(pageNumber - 1) * pageSize,第二個(gè)參數(shù)是pageNumber * pageSize

          應(yīng)用示例

          通過(guò)console.log輸出結(jié)果,我們可以清楚地看到分頁(yè)后的數(shù)組片段:

          console.log(paginate(arr, 10, 1)); // 第一頁(yè):[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
          console.log(paginate(arr, 10, 2)); // 第二頁(yè):[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
          console.log(paginate(arr, 10, 3)); // 第三頁(yè):[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]

          結(jié)束

          看吧!實(shí)現(xiàn)分頁(yè)是不是很簡(jiǎn)單?只要幾行代碼,就能輕松搞定數(shù)組的分頁(yè)展示。希望這個(gè)小技巧能為你的項(xiàng)目帶來(lái)幫助!如果你還有其他關(guān)于JavaScript的問(wèn)題或想學(xué)習(xí)更多的編程知識(shí),歡迎在評(píng)論區(qū)留言,我們一起討論進(jìn)步哦!

          在Android應(yīng)用程序中渲染HTML并實(shí)現(xiàn)分頁(yè),可以使用WebView組件。WebView是Android提供的用于顯示W(wǎng)eb內(nèi)容的控件,可以加載HTML頁(yè)面并進(jìn)行渲染。下面是一個(gè)簡(jiǎn)單的示例代碼,展示了如何在Android應(yīng)用程序中使用WebView實(shí)現(xiàn)HTML渲染和分頁(yè)功能:



          在上述代碼中,我們首先在布局文件(activity_main.xml)中添加一個(gè)WebView組件。然后,在MainActivity中,我們獲取WebView實(shí)例,并對(duì)其進(jìn)行一些設(shè)置,例如啟用JavaScript和加載HTML頁(yè)面。

          HTML頁(yè)面可以通過(guò)loadUrl方法加載。在示例中,我們加載的是file:///android_asset/page.html,它假設(shè)HTML文件存儲(chǔ)在應(yīng)用的assets目錄中。

          為了在WebView中實(shí)現(xiàn)分頁(yè)功能,可以在HTML頁(yè)面中使用CSS的分頁(yè)屬性。例如,在CSS中可以設(shè)置-webkit-column-count屬性來(lái)指定列數(shù),從而實(shí)現(xiàn)分頁(yè)效果。具體的CSS設(shè)置可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。

          通過(guò)以上代碼,Android應(yīng)用程序?qū)⒓虞d并渲染HTML頁(yè)面,并在WebView中顯示。如果HTML頁(yè)面包含分頁(yè)屬性,將會(huì)自動(dòng)分頁(yè)顯示內(nèi)容。

          需要注意的是,為了能夠加載本地的HTML文件,需要在AndroidManifest.xml文件中添加適當(dāng)?shù)臋?quán)限,例如:


          你可以根據(jù)自己的需求對(duì)WebView進(jìn)行更多的定制和擴(kuò)展,以實(shí)現(xiàn)更復(fù)雜的HTML渲染和分頁(yè)功能。

          項(xiàng)目開(kāi)發(fā)過(guò)程中,分頁(yè)是少不了的,之前封裝了一個(gè)分頁(yè)組件,樣式是基于bootstrap的樣式,當(dāng)然也可以自己來(lái)修改;

          別的不說(shuō),上圖上代碼;

          bootstrap樣式分頁(yè)

          以下是相關(guān)代碼:

          /***=======================分頁(yè)樣式==================================***/  
          /*分頁(yè)樣式*/  
          .page{  
            display:inline-block;  
            width:100%;  
            text-align:center;  
            height:35px;  
            line-height:35px;  
            background-color:none;  
          }  
          .page  .pagination{  
            margin:0px  !important;  
          }  
          .page  .pagination  li  a{  
            /*修改按鈕樣式*/  
            border:none  !important;  
            background-color:transparent;  !important;  
            color:#555;  
            cursor:pointer;  
          }  
          .page  .pagination  li  a:hover,.page  .pagination  li  a:focus,.page  .pagination  li  a:active{  
            background-color:#ccc;  
          }  
          .page  .pagination  li.active  a,.page  .pagination  li.active  a:hover,.page  .pagination  li  a:active,.page  .pagination  li  a:focus{  
            color:#0099ff;  
            cursor:default;  
            background-color:none;  
          }  
          .pageinfo{
            display:none  !important;
          }
          /*隱藏分頁(yè)信息*/  
          .clickmore{  cursor:pointer;  }  
          .pagination>.action>a:hover,.pagination>.action>a:focus{  color:#0099ff  !important;  cursor:default;  } 
           /****======================分頁(yè)樣式結(jié)束============================***/

          上面是自己寫(xiě)的分頁(yè)樣式,可自行修改之,下面是分頁(yè)組件代碼:

          /**  
             * bootstrap 對(duì)應(yīng)的獨(dú)立分析組件  
              * @demo 
              * pagination.init({  
              *   selector : '.page', //選擇器,作為渲染目標(biāo),默認(rèn)為 '.page.pagination',非必須  
              *   count : 120, //為總記錄數(shù),必須  
              *   isTransform : false,//是否轉(zhuǎn)換為符合后臺(tái)需要的參數(shù)begin /end  
              *   page : 1, //為當(dāng)前頁(yè)碼,非必須  
              *   pagesize : 10, //為每頁(yè)條數(shù),默認(rèn)10,非必須  
              *   increment : 10, //為頁(yè)面存在的分頁(yè)增量,比如只顯示5個(gè)頁(yè)碼,非必須  
              *   pageArray : [], //可以進(jìn)行生成下拉框,比如 10,20,50 ,選擇不同的頁(yè)碼進(jìn)行分頁(yè),非必須  
              *   previousTitle : '點(diǎn)擊查看',//為上一頁(yè)的title顯示,未實(shí)現(xiàn);  
              *   callback : function(pageObject){//為分頁(yè)點(diǎn)擊回調(diào)函數(shù),必須  
              *     console.log(pageObject);//pageObject= {page : 1,pagesize:10};回調(diào)函數(shù)返回值,包括下一個(gè)頁(yè)碼和每頁(yè)條數(shù)  
              *   }  
              * });  
              * @since 2016年2月15日 15:18:36  
              * @author lixun  
              * @version 1.0  
              * @edited by lixun ,增加多實(shí)例;一個(gè)頁(yè)面多個(gè)分頁(yè) ;  
              * 處理思路:  
              * 1\. 對(duì)應(yīng)的每個(gè)selector有一個(gè)pagination,然后在調(diào)用的時(shí)候根據(jù)selector進(jìn)行查找  
              * 2\. 處理的內(nèi)容:1)分頁(yè)加載;2)事件綁定 3)回調(diào)函數(shù) 
              * 3\. 處理原則:平滑處理,原有的可繼續(xù)使用;  
              */ 
          var pagination = {
              _defaultSelector : '.page .pagination',    //默認(rèn)選擇器
              _defaultPagesize : 20,                    //默認(rèn)分頁(yè)條數(shù)
              _defaultIncrement : 10,                    //默認(rèn)分的頁(yè)碼數(shù)
              _defaultPageArray : [10,20,50,100],        //默認(rèn)的條碼下拉框
              _map : {    //用戶(hù)處理多實(shí)例增加的容器,不可覆蓋
                  //selector : {私有屬性}
                  //".page .column" : {}
              },
              //通用屬性
              lastSelector : '',//上一個(gè)選擇器,用于開(kāi)發(fā)者不傳遞參數(shù)的時(shí)候,去查找上一個(gè)選擇器用的。
              previousTitle : '上一頁(yè)',
              nextTitle : '下一頁(yè)',
              previousContent : '上一頁(yè)',
              nextContent : '下一頁(yè)',
              //獲得分頁(yè)實(shí)例
              _getPagination : function(selector){
                  if(null != selector && selector != '' && $(selector).length > 0){
                      return pagination._map[selector];
                  }else{
                      console.error('selector 傳參錯(cuò)誤或$('+selector+')不存在!');
                  }
                  return null;
              },
              //獲得返回的字符串
              pageArrayStr : function(selector,ps){
                  var pa = pagination._map[selector].pageArray;
                  if(null != pa && pa.length > 0){
                      var concatStr = '<select onchange="pagination.changePagesize(\''+(selector)+'\',event)" style="height:20px;line-height:20px;padding:0px;margin-top:-2px;">';
                      var i=0,max=pa.length;
                      for(;i<max;i++){
                          var v = pa[i];
                          concatStr += '<option value="'+v+'" '+(v == ps ? 'selected="true"' : '')+'>'+v+'</option>';
                      }
                      concatStr += '</select>';
                      return concatStr;
                  }
                  return "";
              },
          
              //綁定事件
              bindEvent : function(selector){
                  if(selector && selector != ''){
                      var _tempPaginationInstance = pagination._map[selector] || {};
                      var _bindE = _tempPaginationInstance.bindE == true ? true : false;
                      if(_bindE == false){
                          _tempPaginationInstance.bindE = true;
                          pagination._map[selector] = _tempPaginationInstance;
                          //跳轉(zhuǎn)頁(yè)面
                          $(selector).delegate('li.unselect','click',pagination.clickpage);
                          //綁定上一頁(yè)事件
                          $(selector).delegate('li.pageup','click',pagination.pageup);
                          //綁定下一頁(yè)事件
                          $(selector).delegate('li.pagedown','click',pagination.pagedown);
                          //綁定前面頁(yè)面事件
                          $(selector).delegate('a.previous','click',pagination.previouspage);
                          //綁定后面頁(yè)面事件
                          $(selector).delegate('a.next','click',pagination.nextpage);
                      }
                  }
              },
              //分頁(yè)初始化
              init : function(params){
                  //處理傳參數(shù)據(jù)
                  params = params || {};
                  params.count = params.count || 0;
                  params.pagesize = params.pagesize || pagination._defaultPagesize;
                  var paramSelector = pagination._defaultSelector;
                  if(params.selector){
                      paramSelector = params.selector;
                  }
                  //獲得選擇器后,進(jìn)行實(shí)例處理
                  var paginationInstance = pagination._getPagination(paramSelector);
                  //傳參獲取最新配置
                  var tempPaginationInstance = {
                      selector : paramSelector,
                      page : params.page ? params.page : (paginationInstance && paginationInstance.action == true ? (paginationInstance.page ? paginationInstance.page : 1) : 1),
                      count : params.count || 0,
                      action : false,
                      bindE : false,//是否綁定事件
                      pagesize : params.pagesize,
                      callback : params.callback || $.noop,
                      pagenumber : (parseInt((params.count || 0)/(params.pagesize||pagination._defaultPagesize),10)+((params.count||0)%(params.pagesize||pagination._defaultPagesize)==0 ? 0 : 1)),//根據(jù)總數(shù)和一頁(yè)條數(shù)獲得頁(yè)碼數(shù)量
                      increment :  params.increment || pagination._defaultIncrement,
                      pageArray : params.pageArray || pagination._defaultPageArray
                  };
                  if(paginationInstance && undefined != paginationInstance){
                      //存在實(shí)例,進(jìn)行更新。
                      tempPaginationInstance.bindE = true;//如果存在的話(huà),肯定綁定了
                      pagination._map[paramSelector] = $.extend(paginationInstance,tempPaginationInstance);
                  }else{
                      pagination._map[paramSelector] = tempPaginationInstance;//重新賦值
                      pagination.bindEvent(paramSelector);//綁定事件
                  }
                  pagination.loadPage(paramSelector);
                  pagination.lastSelector = paramSelector;
              },
              //點(diǎn)擊頁(yè)面數(shù)直接跳轉(zhuǎn)
              clickpage : function(){
                  var $a = $(this).find('a');
                  var selector = $a.attr('selector');
                  var gonumber = parseInt($a.html(),10);
                  $(selector+' li.active').addClass('unselect').removeClass('active');
                  $(this).addClass('active').removeClass('unselect');
                  pagination.gopage(selector,gonumber);
              },
              //向上翻頁(yè)
              pageup :  function(){
                  var $a = $(this).find('a');
                  var selector = $a.attr('selector');
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      //得到當(dāng)前頁(yè)面,然后翻頁(yè),如果在邊界,那么就要進(jìn)行觸發(fā)一次翻頁(yè)事件
                      var  $actel = $(selector+' li.active a');
                      var nownumber = parseInt($actel.html(),10);
                      if(nownumber == 1){
                          return false;
                      }else{
                          pagination.gopage(selector,nownumber-1);
                      }
                  }
              },
              //向下翻頁(yè)
              pagedown : function(){
                  var $a = $(this).find('a');
                  var selector = $a.attr('selector');
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      var pagenumber = _tempInstance.pagenumber;
                      //獲得該實(shí)例的分頁(yè)碼數(shù)
                      var  $actel = $(selector+' li.active a');
                      var nownumber = parseInt($actel.html(),10);
                      if(nownumber == pagenumber){
                          return false;
                      }else{
                          pagination.gopage(selector,nownumber+1);
                      }
                  }
              },
              //前面頁(yè)面
              previouspage : function(){
                  var selector = $(this).attr('selector');
                  var _tempInstance =pagination._map[selector];
                  if(_tempInstance){
                      var increment = _tempInstance.increment,
                      page = _tempInstance.page;
                      //判斷當(dāng)前是第幾個(gè),比如16,那么就以10的倍數(shù)向前翻頁(yè)
                      var $nowobj = $(selector+' a.previous').parent();
                      var nextnumber = parseInt($nowobj.next().children().html(),10);
                      var end = (nextnumber-1)%increment > 0 ? parseInt((nextnumber/increment),10)*increment : parseInt((nextnumber/increment-1),10)*increment;
                      pagination.gopage(selector, end+1);
                  }
              },
              //后面頁(yè)面
              nextpage : function(){
                  //判斷當(dāng)前點(diǎn)擊的哪些,比如:現(xiàn)在是5,點(diǎn)擊生成6...
                  var selector = $(this).attr('selector');
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      var increment = _tempInstance.increment;
                      var $nowobj = $(selector+' a.next').parent();
                      var prenumber = parseInt($nowobj.prev().children().html(),10);
                      if(parseInt(prenumber/5,10) ==1){//說(shuō)明在第一頁(yè),要從5加載5個(gè),直到結(jié)束
                          pagination.addPage(selector,$nowobj,5);
                      }else{
                          //第二次 增加頁(yè)面數(shù)量了,應(yīng)該是從10開(kāi)始了...
                          pagination.addPage(selector,$nowobj,increment);
                      }
                  }
              },
              addPage : function(selector,domobj,size){
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      var pagenumber = _tempInstance.pagenumber,
                      increment  = _tempInstance.increment;
                      var start  = parseInt(domobj.prev().children().html(),10);
                      pagination.gopage(selector, start+1);
                  }
              },
              loadPage : function(selector){
                  //根據(jù)selector獲得count,pagesize,page
                  var _tempInstance = pagination._map[selector];
                  if(!_tempInstance){
                      console.log('error : _tempInstance is null now ,check pagination params please!');
                      return null;
                  }
                  var count = _tempInstance.count,
                      pagesize = _tempInstance.pagesize,
                      page = _tempInstance.page,
                      increment = _tempInstance.increment,
                      pageArrayStr = pagination.pageArrayStr(selector,pagesize),
                      pagenumber = _tempInstance.pagenumber;
                  var $page = $(selector);
                  //清空內(nèi)容
                  $page.html('');
                  var pageno = pagenumber;
                  page = page > pageno ? 1 : page;    //如果當(dāng)前頁(yè)碼樹(shù)大于總頁(yè)碼數(shù)則置為1,否則為當(dāng)前頁(yè)碼數(shù);
          
                  //如果頁(yè)數(shù)超過(guò)10,則增...,以5個(gè)數(shù)字遞增,
                  //顯示到page頁(yè)面的下一個(gè)5的倍數(shù)上。
                  var endpage = (parseInt(page/increment,10))*increment > pageno ? pageno : (parseInt(page/increment,10)+(page%increment==0 ? 0 : 1))*increment;
                  if(pageno<=increment){
                      endpage = pageno;
                  }
                  var pageHtml = '';
                  if(pageArrayStr== ''){
                  }else if(pagination._map[selector].pageArray.length==1){
                      pageHtml = '<li class="pageinfo">共'+count+'條 </li>';
                  }else{
                      pageHtml = '<li class="pageinfo">共'+count+'條 , 每頁(yè)'+pageArrayStr+'條</li>';
                  }
                  $page.append(pageHtml);
                  $page.append('<li class="prev pageup '+(page ==1 ? 'disabled' : '')+'"><a title="'+pagination.previousTitle+'" href="javascript:;" selector="'+(selector)+'">'+pagination.previousContent+'</a></li>');
                  //判斷第幾頁(yè)
                  var start = 0;
                  if(page > increment && page <= pageno){
                      $page.append('<li><a class="previous" href="javascript:;" selector="'+(selector)+'">...</a></li>');
                      //給一個(gè)自定義增長(zhǎng)數(shù)量,比如5個(gè),每次增長(zhǎng)五個(gè),當(dāng)前頁(yè)面6頁(yè)面,增長(zhǎng)5個(gè)為10個(gè),start page為 6
                      start = parseInt((page%increment==0 ? (page-1) : page)/increment,10)*increment;
                      endpage = (start+increment ) > pageno ? pageno : (start+increment);//如果開(kāi)始頁(yè)面加上增加頁(yè)面大于最大頁(yè)碼數(shù),則等于最大頁(yè)碼數(shù)
                      if(endpage-page <increment){
                          start = endpage-increment;
                      }
                  }
                  for(var i=start;i<(endpage == 0?1:endpage);i++){
                      var listr = '<li class="unselect"><a href="javascript:;" selector="'+(selector)+'">'+(i+1)+'</a></li>';
                      //在第page頁(yè)面增加樣式
                      if((page-1) == i){
                          listr = '<li class="active"><a selector="'+(selector)+'">'+(i+1)+'</a></li>';
                      }
                      $page.append(listr);
                  }
                  if(pageno > 5 && endpage != pageno){
                      $page.append('<li><a class="next" href="javascript:;" selector="'+(selector)+'">...</a></li>');
                  }
                  $page.append('<li class="next pagedown '+(page == pageno ? 'disabled' : '')+'"><a title="'+pagination.nextTitle+'" href="javascript:;" selector="'+(selector)+'">'+pagination.nextContent+'</a></li>');
              },
              //跳轉(zhuǎn)頁(yè)面
              gopage : function(selector,page){
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      _tempInstance.page = page;
                      _tempInstance.action = true;
                      _callback = _tempInstance.callback;
                      _pagesize = _tempInstance.pagesize;
                      pagination._map[selector] = _tempInstance;
                      _callback(pagination.transform({
                          page : page,
                          rows : _pagesize
                      }));
                  }
              },
              /*返回現(xiàn)在的頁(yè)面*/
              getNowPage : function(selector){
                  selector = selector || (pagination.lastSelector || pagination._defaultSelector);//獲取上一個(gè)選擇器
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      _tempInstance.action = true;
                      var _page = _tempInstance.page,
                          _pagesize = _tempInstance.pagesize;
                      pagination._map[selector] = _tempInstance;
                      return pagination.transform({
                          page : _page,
                          rows : _pagesize
                      });
                  }
                  return null;
              },
              transform : function(paginationParams){
                  if(pagination.isTransform && pagination.isTransform == true){
                      var p = paginationParams.page || 1;
                      var rows = paginationParams.pagesize || 10;
                      return {
                          begin : (p-1)*rows+1,
                          end : p*rows
                      };
                  }
                  return paginationParams;
              },
              //返回分頁(yè)參數(shù),以供列表頁(yè)面加載數(shù)據(jù)使用
              getParams :function(selector){
                  selector = selector || (pagination.lastSelector || pagination._defaultSelector);//獲取上一個(gè)選擇器
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      var _pagesize = _tempInstance.pagesize;
                      return pagination.transform({
                          //第幾頁(yè),一頁(yè)有多少條記錄
                          page:1,
                          rows : _pagesize
                      });
                  }
                  return null;
              },
              changePagesize : function(selector,ev){
                  var t = ev.currentTarget || ev.target || ev.srcElement,
                      $t = $(t),
                      v=$t.find('option:selected').val();
          //            selector = $t.attr('selector');
                  var _tempInstance = pagination._map[selector];
                  if(_tempInstance){
                      _tempInstance.pagesize = v;
                      var _callback = _tempInstance.callback;
                      pagination._map[selector] = _tempInstance;
                      //重新調(diào)用callback方法
                      _callback(pagination.transform({
                          page : 1,
                          rows : v
                      }));
                  }
              }
          };


          文章首發(fā)于 BUG集散地 ,https://chrunlee.cn/article/pagination-web-javascript.html


          主站蜘蛛池模板: 精品国产AⅤ一区二区三区4区 | 人妻无码第一区二区三区 | 精品国产一区二区三区久| 成人一区二区免费视频| 天堂一区人妻无码| 少妇人妻精品一区二区| 无码8090精品久久一区| 精品欧洲av无码一区二区14| 视频一区精品自拍| 国产午夜一区二区在线观看| 3d动漫精品啪啪一区二区免费| 国产一区二区三精品久久久无广告| 精品人体无码一区二区三区| 亚洲AV无码一区二区乱孑伦AS| av无码人妻一区二区三区牛牛| 精品人妻一区二区三区四区在线| 国产无码一区二区在线| 国产成人精品一区二区三区免费| 精品乱人伦一区二区| 精品国产天堂综合一区在线| 精品一区二区三区视频| 国产午夜精品一区理论片飘花| 琪琪see色原网一区二区| 无码aⅴ精品一区二区三区| 精品女同一区二区三区免费站| 久久久国产精品一区二区18禁 | 日韩人妻精品无码一区二区三区| 能在线观看的一区二区三区| 国产伦精品一区二区三区免费下载| 亚洲中文字幕久久久一区| 99久久人妻精品免费一区| 国产日韩AV免费无码一区二区 | 无码人妻精品一区二区三| 国产成人无码精品一区在线观看 | 国产萌白酱在线一区二区| 日韩精品中文字幕视频一区| 色一情一乱一区二区三区啪啪高| 国产日韩一区二区三区在线播放| 亚洲一区二区三区在线网站| 91秒拍国产福利一区| 亚洲一区二区三区高清不卡|