精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

www.在线视频| 国产伦理吴梦梦伦理| 久久夜色电影| 色偷偷88欧美精品久久久| 视频一区二区三| 国产乱人乱偷精品视频| 亚洲最黄网站| 日韩小视频在线| www.男人天堂| 日韩大陆av| 无吗不卡中文字幕| 亚洲一区二区精品在线| 污视频在线免费观看| 免费在线观看成人| 欧美精品在线看| 四虎国产精品成人免费入口| 久久久久久久久成人| 欧美色图在线视频| 热久久最新地址| 国产精品一级伦理| 丰满亚洲少妇av| 国产精品欧美久久久| 日本少妇吞精囗交| 国产精品国产一区| 亚洲人成电影在线播放| 韩国三级hd中文字幕有哪些| 国产一区二区三区影视| 精品女同一区二区三区在线播放| 亚洲AV无码成人精品一区| 免费在线观看污视频| 国产精品一区二区在线播放 | 日本青青草视频| 视频一区中文| 日韩av网址在线| 天天操夜夜操很很操| 日本欧美不卡| 欧美日韩国产精品一区| 91免费国产精品| 五月婷婷在线视频| 久久久精品影视| 精品一区二区三区国产| 亚洲av无码乱码国产精品久久| 奇米777欧美一区二区| 2021国产精品视频| 日本亚洲色大成网站www久久| 一区二区三区在线电影| 亚洲人成自拍网站| 中文字幕av观看| 激情av综合| 亚洲第一色中文字幕| 欧美日韩一区二区区| vam成人资源在线观看| 欧美日韩国产一级片| 美女少妇一区二区| 成人国产精品一区二区免费麻豆| 日韩欧美在线观看视频| 北条麻妃69av| 一根才成人网| 在线看国产日韩| 黄色片在线免费| 日韩一区二区三区免费| 欧美午夜精品免费| 五月激情婷婷在线| 亚洲在线资源| 日韩一区二区麻豆国产| 亚洲三级在线视频| 亚洲高清在线一区| 日韩欧美一区二区视频| 极品白嫩少妇无套内谢| 一区二区亚洲视频| 亚洲激情小视频| 中文字幕人妻一区二区| 欧美猛男男男激情videos| 国产午夜精品全部视频在线播放| 高潮毛片无遮挡| 青青草97国产精品麻豆| 久久精品国产亚洲精品2020| 亚洲熟女www一区二区三区| 欧美理论在线| 91大神福利视频在线| 四虎成人在线观看| 久久电影国产免费久久电影| 91欧美激情另类亚洲| 高清国产mv在线观看| 91麻豆.com| 亚洲午夜精品国产| 男插女视频久久久| 一本色道久久综合亚洲精品按摩| 男人的天堂日韩| 伊人国产精品| 精品国产一区二区三区久久影院 | 国产激情久久久久久熟女老人av| 丰满白嫩尤物一区二区| 欧美一区二区三区精美影视| 毛片网站在线免费观看| 午夜在线成人av| 欧美黑人又粗又大又爽免费| 日韩欧美中文字幕一区二区三区| 亚洲精品一区在线观看香蕉| 国产精品免费人成网站酒店| 99国产精品久久久久久久成人热| 国产精品视频区| 色欲av永久无码精品无码蜜桃| 日本一区二区三区国色天香| 男人天堂av片| 色综合视频一区二区三区日韩| 亚洲黄色www| √天堂中文官网8在线| 新狼窝色av性久久久久久| 成人精品一区二区三区电影免费 | 日韩成人视屏| 在线视频免费一区二区| 日本在线视频免费观看| 久久99精品国产麻豆不卡| 精品伦精品一区二区三区视频| 在线播放日本| 精品国产电影一区| 国产成人av影视| 1769国产精品视频| 亚洲视频自拍偷拍| 久久精品视频国产| 国产精品www994| 成人激情综合网| 嫩草精品影院| 亚洲高清不卡在线| 中文字幕国内自拍| 欧美成人精品一级| 亚洲美女自拍视频| 国产一级特黄视频| 国内精品自线一区二区三区视频| 国外成人在线视频网站| 日本在线视频网| 一本久道中文字幕精品亚洲嫩| 国产91在线免费观看| 国产精品一区高清| 高清在线视频日韩欧美| 国产情侣自拍小视频| 国产丝袜在线精品| 国产精品无码av在线播放| 主播大秀视频在线观看一区二区| 亚洲免费伊人电影在线观看av| 强行糟蹋人妻hd中文| 久久精品久久99精品久久| 欧美大香线蕉线伊人久久| 久色国产在线| 日韩欧美你懂的| 国产欧美小视频| 日本美女一区二区三区视频| 久久五月天婷婷| 8x8ⅹ拨牐拨牐拨牐在线观看| 777a∨成人精品桃花网| 免费观看a级片| 日韩国产一区二| 日韩av一区二区三区在线| jizz一区二区三区| 精品蜜桃在线看| 欧美精品99久久久| 国产成人精品影视| 久久亚洲a v| 久久超级碰碰| 国外成人在线直播| 色婷婷av一区二区三区之红樱桃| 亚洲另类在线一区| 超碰在线超碰在线| 中文字幕一区二区av | 超碰中文字幕在线| 成人精品国产一区二区4080| 国产乱淫av片杨贵妃| 亚洲视频三区| 久久久久久中文字幕| www.香蕉视频| 五月婷婷欧美视频| 久久中文字幕人妻| 国产农村妇女毛片精品久久莱园子| 成人精品一二区| 男男gaygays亚洲| 亚洲国产三级网| 精品午夜福利在线观看| 久久亚洲精品国产精品紫薇| 久久久久免费精品| 区一区二视频| 亚洲在线www| heyzo高清在线| 亚洲人线精品午夜| 亚洲天天综合网| 亚洲精品乱码久久久久久黑人| 色综合久久久无码中文字幕波多| 亚洲黄色天堂| 日韩精品伦理第一区| 性欧美videohd高精| 中文字幕免费精品一区| av网站免费播放| 五月综合激情日本mⅴ| 永久免费成人代码| 国产在线不卡一区| 妞干网在线视频观看| 精品在线播放| 91亚洲精品一区| yellow在线观看网址| 亚洲欧美另类中文字幕| 一级片在线观看视频| 一区二区欧美视频| 深爱五月激情网| 久久精品国产**网站演员| 免费看欧美黑人毛片| 色天天久久综合婷婷女18| 懂色中文一区二区三区在线视频| 亚洲最大网站| 欧美激情亚洲另类| 韩国免费在线视频| 精品福利视频一区二区三区| 亚洲高清毛片一区二区| 亚洲色大成网站www久久九九| 国产性生活毛片| 国内精品在线播放| 国产aaaaa毛片| 伊人久久成人| 日本一区免费看| 中文字幕av一区二区三区四区| 国产高清在线不卡| 污视频网站在线免费| 亚洲性av网站| 欧美自拍第一页| 欧美日韩久久一区二区| 久久露脸国语精品国产91| 成人欧美一区二区三区黑人麻豆| 丰满岳乱妇一区二区| 日产国产欧美视频一区精品| 99在线免费视频观看| 日韩精品免费一区二区在线观看| 成人性色av| 日韩精品一区二区三区中文字幕| 国产精品美女久久久久av超清| aaa在线播放视频| 欧美成人精品一区二区三区| 国产在线你懂得| 亚洲欧洲国产精品| 亚洲AV无码国产精品午夜字幕| 欧美日产在线观看| 亚洲精品毛片一区二区三区| 亚洲mv在线观看| 久久精品人妻一区二区三区| 日韩美女视频一区| 中文字幕人妻一区二区三区在线视频| 成人精品视频一区二区三区尤物| 午夜剧场在线免费观看| 日本欧美在线观看| 国产又猛又黄的视频| 免播放器亚洲| 波多野结衣家庭教师视频| 日韩视频不卡| 免费在线观看视频a| 国产视频一区在线观看一区免费| 久久av综合网| 亚洲婷婷免费| 成年人网站国产| 一区在线观看| 男人草女人视频| 欧美日韩中文| 国产成人艳妇aa视频在线| 在线看片不卡| 国产精品va在线观看无码| 国产欧美高清视频在线| 日韩视频在线观看国产| 精品国产1区| 神马影院午夜我不卡影院| 少妇精品久久久一区二区三区| 免费一区二区三区| 日韩精品免费一区二区在线观看 | 26uuu另类亚洲欧美日本老年| gratisvideos另类灌满| 国产91av在线| 性高爱久久久久久久久| 国产精品狠色婷| 成人在线不卡| 91视频免费网站| 这里视频有精品| 久久久av水蜜桃| 综合综合综合综合综合网| 欧美下载看逼逼| 欧美日韩国产高清电影| 日韩高清在线播放| 亚洲h色精品| 欧美视频在线第一页| 在线播放精品| 日本精品一区二区三区四区| 激情深爱一区二区| 亚洲午夜久久久久久久久| av不卡在线播放| 久久久久久久久久久久| 国产精品免费看片| 精品在线视频免费| 欧美午夜丰满在线18影院| 欧美日韩 一区二区三区| 制服丝袜亚洲播放| 天天舔天天干天天操| 色天天综合狠狠色| 国产第一页在线| 国产第一区电影| 欧美日韩午夜电影网| 精品视频导航| 亚洲精品国产偷自在线观看| 九一国产精品视频| 久久国产免费看| 欧美大喷水吹潮合集在线观看| 久久久亚洲欧洲日产国码αv| 午夜国产福利一区二区| 精品毛片网大全| 亚洲在线观看av| 精品电影一区二区三区| 五月天久久久久久| 欧美大成色www永久网站婷| 亚洲精品中文字幕| 亚洲一区二区三区xxx视频| 日本精品影院| 毛片在线视频观看| 天堂在线一区二区| 国产精品日日摸夜夜爽| 中文一区二区完整视频在线观看| 久久夜色精品亚洲| 91精品国产乱码久久蜜臀| 男人天堂网在线| 久久久久久国产免费| 国产香蕉久久| 日本视频一区二区不卡| 亚洲日本欧美| 性鲍视频在线观看| 91最新地址在线播放| 国产在线一区视频| 在线播放91灌醉迷j高跟美女| 视频午夜在线| 欧美精品少妇videofree| 综合久久av| 欧美日韩精品免费观看| 中文字幕一区二区三区乱码图片| 一级黄色香蕉视频| 久久久久久影视| 女人十八岁毛片| 亚洲精品一区二区三区99| fc2ppv国产精品久久| 91手机视频在线观看| 成人国产精品一级毛片视频| 大肉大捧一进一出好爽视频| 国产成人aaa| 老熟妇高潮一区二区三区| 91精品在线观看入口| 日韩在线免费电影| 国产精品久久久久久久久男| 日本在线视频一区二区三区| 成年人深夜视频| 国产精品小仙女| 国产一区二区播放| 7777精品伊人久久久大香线蕉最新版| 高清福利在线观看| 国产ts人妖一区二区三区| 激情av综合| 99re99热| 成人精品鲁一区一区二区| 国产精品18p| 精品国产乱码久久久久久图片| a级网站在线播放| 18成人在线| 午夜精品亚洲| 岛国大片在线免费观看| 亚洲福利一区二区三区| 亚洲欧美一区二区三| 91精品国产高清自在线看超| 国产丝袜一区| 97xxxxx| 国产日韩欧美一区二区三区乱码| 亚洲精品91天天久久人人| 中文字幕日韩欧美精品在线观看| 日韩护士脚交太爽了| 香蕉视频在线网址| 韩国毛片一区二区三区| 99热精品免费| 精品亚洲国产成av人片传媒 | 国产精品一区2区3区| aaa毛片在线观看| 国产日韩欧美综合一区| 一二三区中文字幕| 久久亚洲一区二区三区四区五区高| 久久天堂影院| 国产美女在线一区| k8久久久一区二区三区| av一级在线观看| 精品国产一区二区三区在线观看| 国产精品99久久免费| 亚洲精品蜜桃久久久久久| 久久综合九色综合97_久久久| 一本色道久久综合无码人妻| 欧美另类老女人| 欧美挤奶吃奶水xxxxx| 成人一区二区三| 亚洲综合一区在线| 男人av在线| 成人淫片在线看| 91综合在线| 免费a在线观看播放| 欧美视频一区二区|