精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一步步教你如何用HTML 5拖拽功能打造購物車

譯文
開發 前端
在本文中,將指導讀者認識 HTML 5中的拖拽功能,并且使用它來打造一款基本的購物車。這個購物車很簡單,我們只往其中放置一件商品然后檢查是否已有商品了,如果已經存在同樣的商品,則更 新其數量和價格。本文要求讀者有初步的HTML 5基礎知識和一定基礎的Javascript知識即可。

在***的HTML 5標準中,為***的各類瀏覽器帶來了拖拽功能。這意味著現在可以不通過其他框架如jQuery的輔助就能在頁面上拖拽各種元素。在本文中,將指導讀者認識 HTML 5中的拖拽功能,并且使用它來打造一款基本的購物車。這個購物車很簡單,我們只往其中放置一件商品然后檢查是否已有商品了,如果已經存在同樣的商品,則更 新其數量和價格。本文要求讀者有初步的HTML 5基礎知識和一定基礎的Javascript知識即可。

開始

首先我們需要設計購物車的基礎結構和準備一系列的商品。為了簡單演示使用了各類商品,這里只是使用HTML 5中的data_*屬性(可參考https://developer.mozilla.org/en-US/docs/Web/Guide/HTML /Using_data_attributes),為各個商品添加了價格。簡單來說,data_屬性是讓用戶可以為某些標簽存儲一些額外的數據信息。代碼如下所示:

  1. <section id="cart" class="shopping-cart"> 
  2.     <ul> 
  3.     </ul> 
  4.     <span class="total">0.00</span> 
  5. </section> 
  6. <section id="products" class="products"> 
  7.     <ul> 
  8.         <li id="product-1" data-price="2.00"><span>Product 1</span></li> 
  9.         <li id="product-2" data-price="3.00"><span>Product 2</span></li> 
  10.         <li id="product-3" data-price="2.99"><span>Product 3</span></li> 
  11.         <li id="product-4" data-price="3.50"><span>Product 4</span></li> 
  12.         <li id="product-5" data-price="4.25"><span>Product 5</span></li> 
  13.         <li id="product-6" data-price="6.75"><span>Product 6</span></li> 
  14.         <li id="product-7" data-price="1.99"><span>Product 7</span></li> 
  15.     </ul> 
  16. </section> 

由于本文是主要講解使用Javascript搭配HTML 5的新功能,因此不會使用大家常用的jQuery。下面編寫addEvent事件,代碼如下:

  1. function addEvent(element, event, delegate ) { 
  2.     if (typeof (window.event) != 'undefined' && element.attachEvent) 
  3.         element.attachEvent('on' + event, delegate); 
  4.     else  
  5.         element.addEventListener(event, delegate, false); 

我們將使用的***個事件是readystatechange 。該事件在當文檔的狀態發生改變的時候觸發,我們期望將其狀態設置為“complete”,直到附加上剩余的事件和邏輯代碼。這個跟jQuery中的.ready事件類似。代碼如下:

  1. addEvent(document, 'readystatechange', function() { 
  2.     if ( document.readyState !== "complete" )  
  3.         return true; 
  4. }); 

對DOM查詢

在HTML 5標準中,DOM的選擇器方面也進行了更新,其中新增的功能中最有用的方法就是querySelectorAll。這個方法允許用戶使用更復雜的css樣式選擇器(有點象jQuery)去查詢頁面元素。這比舊有的通過class和ID去進行查詢簡單些。

下面是其中一個例子:

  1. var items = document.querySelectorAll("section.products ul li"); 
  2. var cart = document.querySelectorAll("#cart ul")[0]; 

這里,首先是分別使用items和cart變量獲得商品列表和購物車列表,留作稍候使用。可以看到,上面通過querySelectorAll的方 法比以往更加方便了。既然已經有了產品的列表,那么我們將實現拖拽功能并且當產品被拖拽的時候,必須要有相關的事件進行監聽。為了實現這個目的,將循環遍 歷商品列表并且使用setAttribute方法設置draggable屬性為true,這里并且要為每個商品都添加dragstart事件。代碼如下:

  1. for (var i = 0; i < items.length; i++) { 
  2.     var item = items[i]; 
  3.     item.setAttribute("draggable", "true"); 
  4.     addEvent(item, 'dragstart', onDrag); 
  5. }; 

在上面的代碼中,請注意將dragstart方法委托定義為onDrag。這個方法的目的是設置拖拽的選項并且保存元素的id留作稍候通過使用 dataTransfer.setData方法獲得數據。dataTransfer事件對象允許我們指定默認的拖拽動作的效果。默認是既復制并移動,但這 里我們強制令其為只移動元素。代碼如下:

  1. function onDrag(event){ 
  2.     event.dataTransfer.effectAllowed = "move"
  3.     event.dataTransfer.dropEffect = "move"
  4.     var target = event.target || event.srcElement; 
  5.     var success = event.dataTransfer.setData('Text', target.id); 

#p#

設計購物車

我們先來看下設計的購物車大概是什么樣子的,如下圖:

看上去樣子不大漂亮,但這個并不影響我們的示例教學用。可以看到用戶可以拖拉在Product List中的商品到上面的購物車區域中。

默認元素是不接收drop事件的,因此為了能讓某個元素能接收到拖拽的事件消息,我們要重寫默認的行為。為了實現這個目的,使用了onDragOver方法。代碼如下,所做的其實是阻止默認的dragover和dragenter事件行為:

  1. function onDragOver(event){ 
  2.     if(event.preventDefault) event.preventDefault(); 
  3.     if (event.stopPropagation) event.stopPropagation(); 
  4.     else event.cancelBubble = true
  5.     return false; 
  6. addEvent(cart, 'dragover', onDragOver);

接下來,我們要往購物車中增加商品了。只需要使用dataTransfer.getData方法從dataTransfer對象中取出id的值,有了id的值就可以從商品列表中找到商品。但要注意的是在往購物車中放商品前要檢查該商品是否已經放置在里面了,

檢查的方法很簡單,只需要使用querySelectorAll方法就可以了,代碼如下:

  1. var exists = document.querySelectorAll("#cart ul li[data-id='" + id + "']"); 

接下來就很容易根據變量exists去判斷是否購物車中已經存在商品,代碼如下:

  1. if(exists.length > 0){ 
  2.     updateCartItem(exists[0]); 
  3. } else { 
  4.     addCartItem(item, id); 
  5. }

 在上面的代碼中,如果購物車中不包含任何商品,則調用下面的代碼addCartItem

  1. function addCartItem(item, id) { 
  2.     var clone = item.cloneNode(true); 
  3.     clone.setAttribute('data-id', id); 
  4.     clone.setAttribute('data-quantity', 1); 
  5.     clone.removeAttribute('id'); 
  6.      
  7.     var fragment = document.createElement('span'); 
  8.     fragment.setAttribute('class', 'quantity'); 
  9.     fragment.innerHTML = ' x 1'
  10.     clone.appendChild(fragment);     
  11.      
  12.     fragment = document.createElement('span'); 
  13.     fragment.setAttribute('class', 'sub-total'); 
  14.     clone.appendChild(fragment);                     
  15.     cart.appendChild(clone); 

如果購物車中不包含某件商品,則addCartItem方法中要做的事是克隆當前的商品項。現在可以指定的data-*的值。首先在克隆后的結點中,設置的是data-id結點,然后設置data-quantity屬性為1并移除id屬性(id屬性在頁面中是唯一的)。然后我們增加兩個新的span到列表項中,這是用來顯示小計項和產品的數量的。下圖是從商品列表中拖拉到購物車中的情景:

更新購物車中的商品

如果一個商品已經在購物車中存在了,我們將要增加其數量,其中我們顯示給用戶的方式是單價*數量,因此,我們使用 getAttribute方法就可以獲得當前的數量并且對其進行增加的操作,代碼如下:

  1. function updateCartItem(item){ 
  2.     var quantity = item.getAttribute('data-quantity'); 
  3.     quantity = parseInt(quantity) + 1 
  4.     item.setAttribute('data-quantity', quantity); 
  5.     var span = item.querySelectorAll('span.quantity'); 
  6.     span[0].innerHTML = ' x ' + quantity; 

#p#

更新總價格

一旦購物車的商品數量增加了,我們就要重新計算總價格。這里我們再次使用了

querySelectorAll功能。我們只需要遍歷購物車中的每一個商品并重新計算價格就可以了,這里是取了兩位小數位。

  1. function updateCart(){ 
  2.     var total = 0.0; 
  3.     var cart_items = document.querySelectorAll("#cart ul li") 
  4.     for (var i = 0; i < cart_items.length; i++) { 
  5.         var cart_item = cart_items[i]; 
  6.         var quantity = cart_item.getAttribute('data-quantity'); 
  7.         var price = cart_item.getAttribute('data-price'); 
  8.          
  9.         var sub_total = parseFloat(quantity * parseFloat(price)); 
  10.         cart_item.querySelectorAll("span.sub-total")[0].innerHTML = " = " + sub_total.toFixed(2); 
  11.          
  12.         total += sub_total; 
  13.     } 
  14.      
  15.     document.querySelectorAll("#cart span.total")[0].innerHTML = total.toFixed(2); 

從下圖中可以看到當拖拽多個商品到購物車中,商品的總價格是會增加的:

 

***我們總體看下所有的Javascript代碼如下所示。

  1. function addEvent(element, event, delegate ) { 
  2.     if (typeof (window.event) != 'undefined') 
  3.         element.attachEvent('on' + event, delegate); 
  4.     else  
  5.        element.addEventListener(event, delegate, false); 
  6.  
  7. addEvent(document, 'readystatechange', function() { 
  8.     if ( document.readyState !== "complete" )  
  9.         return true; 
  10.          
  11.     var items = document.querySelectorAll("section.products ul li"); 
  12.     var cart = document.querySelectorAll("#cart ul")[0]; 
  13.      
  14.     function updateCart(){ 
  15.         var total = 0.0; 
  16.         var cart_items = document.querySelectorAll("#cart ul li") 
  17.         for (var i = 0; i < cart_items.length; i++) { 
  18.             var cart_item = cart_items[i]; 
  19.             var quantity = cart_item.getAttribute('data-quantity'); 
  20.             var price = cart_item.getAttribute('data-price'); 
  21.              
  22.             var sub_total = parseFloat(quantity * parseFloat(price)); 
  23.             cart_item.querySelectorAll("span.sub-total")[0].innerHTML = " = " + sub_total.toFixed(2); 
  24.              
  25.             total += sub_total; 
  26.         } 
  27.          
  28.         document.querySelectorAll("#cart span.total")[0].innerHTML = total.toFixed(2); 
  29.     } 
  30.      
  31.     function addCartItem(item, id) { 
  32.         var clone = item.cloneNode(true); 
  33.         clone.setAttribute('data-id', id); 
  34.         clone.setAttribute('data-quantity', 1); 
  35.         clone.removeAttribute('id'); 
  36.          
  37.         var fragment = document.createElement('span'); 
  38.         fragment.setAttribute('class', 'quantity'); 
  39.         fragment.innerHTML = ' x 1'
  40.         clone.appendChild(fragment);     
  41.          
  42.         fragment = document.createElement('span'); 
  43.         fragment.setAttribute('class', 'sub-total'); 
  44.         clone.appendChild(fragment);                     
  45.         cart.appendChild(clone); 
  46.     } 
  47.      
  48.     function updateCartItem(item){ 
  49.         var quantity = item.getAttribute('data-quantity'); 
  50.         quantity = parseInt(quantity) + 1 
  51.         item.setAttribute('data-quantity', quantity); 
  52.         var span = item.querySelectorAll('span.quantity'); 
  53.         span[0].innerHTML = ' x ' + quantity; 
  54.     } 
  55.      
  56.     function onDrop(event){             
  57.         if(event.preventDefault) event.preventDefault(); 
  58.         if (event.stopPropagation) event.stopPropagation(); 
  59.         else event.cancelBubble = true
  60.          
  61.         var id = event.dataTransfer.getData("Text"); 
  62.         var item = document.getElementById(id);             
  63.                      
  64.         var exists = document.querySelectorAll("#cart ul li[data-id='" + id + "']"); 
  65.          
  66.         if(exists.length > 0){ 
  67.             updateCartItem(exists[0]); 
  68.         } else { 
  69.             addCartItem(item, id); 
  70.         } 
  71.          
  72.         updateCart(); 
  73.          
  74.         return false; 
  75.     } 
  76.      
  77.     function onDragOver(event){ 
  78.         if(event.preventDefault) event.preventDefault(); 
  79.         if (event.stopPropagation) event.stopPropagation(); 
  80.         else event.cancelBubble = true
  81.         return false; 
  82.     } 
  83.  
  84.     addEvent(cart, 'drop', onDrop); 
  85.     addEvent(cart, 'dragover', onDragOver); 
  86.      
  87.     function onDrag(event){ 
  88.         event.dataTransfer.effectAllowed = "move"
  89.         event.dataTransfer.dropEffect = "move"
  90.         var target = event.target || event.srcElement; 
  91.         var success = event.dataTransfer.setData('Text', target.id); 
  92.     } 
  93.          
  94.      
  95.     for (var i = 0; i < items.length; i++) { 
  96.         var item = items[i]; 
  97.         item.setAttribute("draggable", "true"); 
  98.         addEvent(item, 'dragstart', onDrag); 
  99.     }; 
  100. }); 

本文的demo可以在http://developerdrive.developerdrive.netdna-cdn.com/wp-content/uploads/2013/09/cart.html中看到,

完整代碼可以在http://developerdrive.developerdrive.netdna-cdn.com/wp-content/uploads/2013/09/cart.zip中獲得下載。

 

責任編輯:陳四芳 來源: 51CTO
相關推薦

2017-12-25 11:50:57

LinuxArch Linux

2017-01-19 21:08:33

iOS路由構建

2018-06-11 15:30:12

2018-12-24 10:04:06

Docker存儲驅動

2019-03-05 14:09:27

Docker存儲容器

2019-07-09 15:23:22

Docker存儲驅動

2010-08-12 10:02:16

路由器NAT

2009-08-14 11:35:01

Scala Actor

2010-08-10 11:31:36

路由器配置NAT

2009-04-15 09:29:07

2018-03-07 15:24:41

PythonMySQL

2009-12-18 16:35:56

如何查找局域網發生的故

2016-11-02 18:54:01

javascript

2010-03-04 16:28:17

Android核心代碼

2011-09-05 12:36:08

路由器限速linux路由器

2010-04-07 13:05:57

2024-11-18 17:12:18

C#編程.NET

2015-07-27 16:06:16

VMware Thin虛擬化

2019-04-01 10:15:02

2018-07-13 15:36:52

點贊
收藏

51CTO技術棧公眾號

国产毛片视频网站| 日本精品久久电影| 亚洲欧洲日韩精品在线| 亚洲午夜精品久久| 精品久久久久久亚洲精品| 色吊丝在线永久观看最新版本| 欧美精品在线一区| 亚洲国产精品传媒在线观看| 福利在线导航136| 黄色影视在线观看| 福利视频第一区| 户外露出一区二区三区| 97超碰青青草| 欧美精品一区视频| 91精品国产成人观看| 少妇久久久久久被弄高潮| 在线播放日韩av| 国产视频一区在线观看一区免费| 日韩特黄一级片| 午夜精品免费视频| 99热在线精品观看| 成人免费看片98| 美女少妇精品视频| 开心久久婷婷综合中文字幕| 亚洲成人天堂网| 欧美精品三级在线观看| 免费视频一区三区| 国产乱女淫av麻豆国产| 在线精品视频一区二区| 国产三级在线观看| 中文字幕不卡每日更新1区2区| 中文字幕一区二区视频| xxxx视频在线| 日韩av卡一卡二| 日韩视频一区二区在线观看| 国产精品一级在线观看| 99精品视频国产| 亚洲大胆人体av| 视频二区欧美| 成人性生交视频免费观看| 欧美体内谢she精2性欧美| 日本中文字幕在线播放| 国产一区二区在线网站| 国产精品99久久不卡二区| 毛片在线播放网站| a在线视频观看| 精品日本美女福利在线观看| 在线免费观看黄色网址| 综合久久国产| 中文字幕亚洲不卡| 岛国av在线播放| 成人午夜激情av| 亚洲黄色录像片| av免费网站在线| 伊人狠狠色丁香综合尤物| 最新国产の精品合集bt伙计| 国产精品原创视频| 一边摸一边做爽的视频17国产| 最新国产成人av网站网址麻豆| 三级不卡在线观看| 国产精品va无码一区二区三区| 色综合久久88| 日韩av中文字幕一区二区三区| 国产精品一二三四五区| 日本一区二区三区www| 日韩欧美亚洲国产一区| www国产精品| 日韩免费在线视频观看| 国内精品国产三级国产在线专| 91精品啪在线观看国产81旧版| 久久高清免费视频| 色乱码一区二区三区熟女| 精品国产不卡一区二区三区| 欧美精选一区二区三区| 凹凸精品一区二区三区| 欧美视频1区| 一本色道久久综合狠狠躁的推荐| 成人av影音| 综合五月激情网| 国产精品久久久久久久美男 | 国产欧美一区二区三区在线看蜜臀 | 双性尿奴穿贞c带憋尿| 欧美日韩亚洲丝袜制服| 欧美日韩一区自拍| 天堂在线一二区| 中文字幕久久一区| 欧美午夜一区二区三区| 精品成人18| 欧美日韩亚洲国产另类| 欧美视频小说| 欧美精品一卡两卡| 国产精品一区二区99| 依依成人在线视频| 国产性生活免费视频| 日韩精品一区二区三区视频| 欧美1级日本1级| 国产精品毛片一区视频播| 伊人久久一区二区三区| 久久在线免费视频| 国产91高潮流白浆在线麻豆| 欧美电影免费观看高清完整| 精品无码久久久久久久久| yellow视频在线观看一区二区| 亚洲成人一区二区| 一区二区三区四区视频免费观看| 亚洲 欧美 国产 另类| 欧美aaa在线观看| 亚洲第一精品夜夜躁人人躁| 在线亚洲成人| 99精品在免费线偷拍| 日韩经典在线观看| 日韩av高清| 亚洲国产精品成人精品| 精品一区二区在线观看| 电影91久久久| 中文字幕二区三区| 日本人dh亚洲人ⅹxx| 日本不卡一区二区三区在线观看| 欧美成人精品一区| 欧美高清激情brazzers| 99天天综合性| 亚洲一级特黄| 欧美日韩五区| 日本高清中文字幕在线| 欧美一区二区激情视频| 国产免费a级片| 一本久道久久综合| 性欧美xxxx视频在线观看| 一本一本大道香蕉久在线精品| 99久久99精品久久久久久 | 中文字幕在线欧美| 久久精品视频在线观看免费| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 青娱乐在线视频免费观看| 色综合天天色综合| 国产日韩在线视频| 精品国产免费一区二区三区四区 | 国外成人在线视频网站| 91精品国产高清自在线| 欧美精品一区二区三| 亚洲麻豆国产自偷在线| 久久精品91| 日韩国产一区二区三区| 福利写真视频网站在线| 国产精品久久久久久在线| 国产免费无码一区二区视频| 国内精品视频一区二区三区| 乱一区二区三区在线播放| 久久久久久久久久国产精品| 色哟哟在线观看一区二区三区| 国产91精品精华液一区二区三区| 亚洲精品成人| 久久综合偷偷噜噜噜色| 酒色婷婷桃色成人免费av网| 一级特黄aaa大片在线观看| 午夜影院福利社| 日韩欧美三级电影| 欧美高清视频在线| 色国产精品一区在线观看| 国产福利91精品| 国产精品久久久久毛片大屁完整版| 婷婷精品久久久久久久久久不卡| 国产一级二级三级在线观看| 超碰在线观看91| 欧美一二三不卡| 亚洲综合小说区| 美日韩丰满少妇在线观看| 欧美人妖巨大在线| 亚洲在线免费播放| 久久久一区二区三区捆绑**| 伊人狠狠色j香婷婷综合| 亚洲视频分类| 日韩av毛片| 国产成人精品亚洲精品色欲| 免费毛片一区二区三区| 五月天婷婷在线观看视频| 精品久久免费观看| 亚洲一区二区少妇| 国外视频精品毛片| www.日本久久久久com.| 日韩成人在线视频| 亚洲自拍偷拍av| 韩国久久久久| 精品国产18久久久久久洗澡| 亚洲网站免费| 9999在线精品视频| 欧美电影免费观看| 日韩欧美一区二区三区在线观看| 91在线网址| 精精国产xxxx视频在线| 国产女主播福利| 国产第一页在线播放| 成人无码精品1区2区3区免费看| 日韩在线一级片| 日本a在线天堂| 亚洲精品一区二区三区四区五区 | 无码aⅴ精品一区二区三区浪潮| 亚洲最大av网| 日本在线精品视频| 亲子乱一区二区三区电影| 久久91亚洲人成电影网站| 亚洲精品一区二区三区福利| 欧美日韩成人综合天天影院| 亚洲综合精品自拍| 大伊人狠狠躁夜夜躁av一区| 欧美一区二区二区| 国产精品久久久久四虎| 国产a级毛片一区| 波多野结衣一区二区三区| 国产亚洲精品免费| 91亚洲国产成人精品一区二三| 国产人伦精品一区二区| 国产精品欧美极品| 91影院在线观看| 美女爽到高潮91| 蜜臀精品一区二区三区在线观看| 视频一区在线视频| 高清不卡在线观看| 中文字幕欧美一| 中文字幕av免费专区久久| 久久蜜桃一区二区| 日本一区二区三区久久久久久久久不 | 内射无码专区久久亚洲| 狠狠躁日日躁夜夜躁av| 亚洲视频一区在线播放| 黑人操亚洲女人| 色中色在线视频| 人成在线免费视频| h视频网站在线观看| 欧美777四色影视在线| 超免费在线视频| 亚洲精品白浆| videos性欧美另类高清| 精品午夜视频| 成人h动漫精品一区二区器材| 日韩在线影院| 日本黄色免费在线| 97人人做人人爽香蕉精品| 999精品视频在线观看| 国产精品麻豆| 久久精品青草| 国产福利不卡视频| 久久亚洲二区三区| 欧美性生交xxxxxdddd| 精品福利二区三区| 中文字幕国产亚洲| 9.1国产丝袜在线观看| 国产精品久久一区二区三区| 久久这里只有精品8| 国产国语老龄妇女a片| 日韩欧美一区二区一幕| 欧美女优在线| 欧美黄色一级| 伊人久久大香线蕉综合四虎小说| 日韩主播视频在线| 久久久午夜电影| 欧美日韩裸体免费视频| 亚洲va在线va天堂| 91精品国产色综合久久不卡蜜臀| 久青草国产97香蕉在线视频| 999视频在线观看| 亚洲va韩国va欧美va精四季| 日韩视频免费播放| 香蕉视频污视频| 日韩国产亚洲欧美| 国产高清在线a视频大全| 高清av一区二区三区| 欧美国产高潮xxxx1819| 国产成人在线视频网址| 亚洲蜜臀av乱码久久精品| 日韩乱码在线视频| 国产精品永久免费观看| 性刺激综合网| 日韩视频在线观看免费视频| av中文字幕观看| 欧美大片免费| 一区二区激情| 狠狠躁天天躁日日躁欧美| 久久精品视频99| 六月婷婷久久| 在线观看免费不卡av| 高清乱码免费看污| 影音先锋中文在线视频| 忘忧草精品久久久久久久高清| 99riav久久精品riav| 欧美一卡二卡在线观看| 国产精品激情av在线播放| 91蝌蚪视频在线观看| 国产一级18片视频| 欧美韩日亚洲| 奇米精品一区二区三区四区 | 亚洲伊人影院| 天堂资源在线中文精品| 欧美美女网站色| 成人性生交xxxxx网站| 北条麻妃在线视频| 中文字幕无码乱码人妻日韩精品| 日韩制服诱惑| 国产在线精品免费| 亚洲国产精品成人一区二区| 欧美日韩亚洲一区二区三区四区| 亚洲激情视频小说| 亚洲精品国产片| 麻豆精品av| 久久久亚洲欧洲日产国码αv| 在线观看久久av| 亚洲国产欧洲综合997久久| 182在线视频| 成人午夜在线观看视频| 一区二区三区韩国免费中文网站| 国产精品久久久久三级| 欧美激情va永久在线播放| 亚洲黄色a v| 欧美视频一二区| 亚洲第一论坛sis| 亚洲三级在线观看| 69av成年福利视频| 风间由美一二三区av片| 日本综合在线| 亚洲狼人精品一区二区三区| 欧美福利视频导航| 久久久久无码国产精品一区| 午夜在线观看一区| 欧美成人免费电影| 国产精一区二区三区| 亚洲另类xxxx| 国产黄页在线观看| 午夜精品无码一区二区三区| 精品国产1区| 色狠狠av一区二区三区| 国产区一区二区| 日本中文在线播放| 竹菊久久久久久久| 伊人婷婷欧美激情| 国产精品精品久久久| 91导航在线观看| 日韩影片中文字幕| 国产精品五月天| 97成人精品区在线播放| 少妇大叫太粗太大爽一区二区| 最新av在线播放| 午夜欧美精品| 日韩视频在线你懂得| 九九久久九九久久| 中国a一片一级一片| 欧美1级日本1级| 日韩风俗一区 二区| 欧美性猛交xxx乱久交| 成人在线免费电影| 久久久久久亚洲精品杨幂换脸| 亚洲欧洲日产国产网站| 日韩成人精品视频在线观看| 成人短视频在线观看| 蜜乳av一区二区| 国产亚洲免费的视频看| 天天看片天天操| 亚洲小说区图片| 蜜臀av一区二区在线免费观看| 久久精品免费电影| 秘密基地免费观看完整版中文 | 久久久久久久国产精品影院| 97激碰免费视频| 青青草原播放器| 不卡一二三区| 亚洲欧美电影院| 国产四区在线观看| 成人高清免费在线播放| 国产呦萝稀缺另类资源| 97视频在线观看成人| 日韩欧美国产成人精品免费| 色婷婷综合网| 亚洲精品一区二区三区影院| 亚洲77777| 欧美男男tv网站在线播放| 亚洲成国产人片在线观看| 成人免费看片视频在线观看| 二区在线视频| 国产精品午夜电影| 久久久久免费网| 噜噜噜噜噜在线视频| 狠狠色伊人亚洲综合成人| 91欧美精品成人综合在线观看| 一本色道久久综合无码人妻| 大尺度一区二区| 91久久嫩草影院一区二区| 精品久久久久久久久久久久久久久久久久| 91久久夜色精品国产按摩| 欧美主播一区二区三区| 韩国视频一区二区三区| 国产美女在线观看| 亚洲一区二区五区| 97成人在线观看视频| 丁香花在线电影| 亚洲男人的天堂网| 国产一区二区在线视频播放| 一区二区三区视频网站| 国产亚洲精品资源在线26u| 亚洲www视频| 天天干天天操av| 亚洲人精品午夜|