色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

selectedIndex屬性深度解析:下拉框選中的正確姿勢(shì)

selectedIndex屬性深度解析:下拉框選中的正確姿勢(shì) select下拉選項(xiàng)的selectedIndex屬性你用過(guò)嗎前陣子在某前端群里看到一個(gè)提問(wèn)明明給下拉框設(shè)置了value頁(yè)面也渲染出了對(duì)應(yīng)的option為什么提交表單時(shí)卻拿不到預(yù)期選項(xiàng)問(wèn)題最后定位到一行很老實(shí)的代碼——有人用selectedIndex做了初始定位又在另一個(gè)事件里改了value兩套邏輯互相覆蓋。評(píng)論區(qū)有人說(shuō)這個(gè)API都快被忘記了。我愣了一下仔細(xì)想想確實(shí)這些年框架用多了原生select上還有多少人在意selectedIndex這個(gè)屬性它到底是干什么的和value比優(yōu)勢(shì)在哪為什么動(dòng)態(tài)下拉里最常翻車的也是它這篇文章想把這家伙重新翻出來(lái)聊透順便把我在幾個(gè)項(xiàng)目里踩過(guò)的坑、寫(xiě)過(guò)的輪子一起交個(gè)底。1. selectedIndex與value到底差了點(diǎn)啥兩個(gè)API的實(shí)質(zhì)分工1.1 從DOM結(jié)構(gòu)理解selectedIndex的底層邏輯很多人第一眼看到selectedIndex覺(jué)得它不就是“選中了第幾項(xiàng)”嘛讀一下返回個(gè)數(shù)字寫(xiě)一下選中對(duì)應(yīng)項(xiàng)。這么說(shuō)沒(méi)錯(cuò)但它底層的工作方式比這更有意思。select元素在DOM里不是孤立存在的它下面掛著一個(gè)options集合也就是HTMLCollection。selectedIndex本質(zhì)上是“當(dāng)前選中項(xiàng)在這個(gè)集合里的整數(shù)下標(biāo)”。選中第一項(xiàng)就是0第二項(xiàng)就是1沒(méi)有選中任何一項(xiàng)就是-1。這種設(shè)計(jì)是瀏覽器最早實(shí)現(xiàn)下拉框交互時(shí)就定下來(lái)的一切操作圍繞集合的下標(biāo)展開(kāi)而不是圍繞選項(xiàng)的value展開(kāi)。這里有個(gè)容易混淆的細(xì)節(jié)value屬性也是select的一部分它返回的是“選中項(xiàng)option的value值”。但select本身沒(méi)有直接的value存儲(chǔ)它所有狀態(tài)都是通過(guò)“哪一項(xiàng)被選中”反映出來(lái)的。你讀select.value瀏覽器底層查的還是selectedIndex你寫(xiě)select.value瀏覽器做的也是遍歷options找到對(duì)應(yīng)value的那個(gè)option然后把它選中。所以在寫(xiě)代碼時(shí)value是“語(yǔ)義化”的selectedIndex是“結(jié)構(gòu)性”的。1.2 為什么說(shuō)selectedIndex在有些場(chǎng)景更可靠既然value這么語(yǔ)義化為什么還要用selectedIndex我的體會(huì)是value在兩種情況下容易“失真”。第一種是選項(xiàng)的value有重復(fù)。HTML規(guī)范里其實(shí)沒(méi)禁止多個(gè)option擁有相同的value值。一旦兩個(gè)選項(xiàng)value一樣select.value就分不清你到底選中了哪個(gè)。這時(shí)候只有selectedIndex能精確表達(dá)位置。第二種是選項(xiàng)根本沒(méi)有value。比如你直接寫(xiě)了option北京/option沒(méi)給value屬性。這種情況option.value返回的是文本內(nèi)容即“北京”。看著沒(méi)問(wèn)題但如果文本里有特殊字符、空格、或者后續(xù)顯示文案變了value跟著變后端存儲(chǔ)就可能受污染。而selectedIndex是不關(guān)心文本的它只管位置位置穩(wěn)定它就穩(wěn)定。我在做模擬項(xiàng)目X的表單頁(yè)時(shí)遇到過(guò)一個(gè)需求用戶在下拉里選學(xué)歷選項(xiàng)有“初中”“高中”“大?!薄氨究啤薄按T士”“博士”。產(chǎn)品要求只允許選“大?!奔耙陨系陀凇按髮!睍r(shí)彈提示并回退到默認(rèn)“大專”。如果我用value判斷還要維護(hù)一個(gè)等級(jí)對(duì)照表用selectedIndex直接比較下標(biāo)就一行if。這種“位置即業(yè)務(wù)等級(jí)”的場(chǎng)景selectedIndex反而比value更直接。1.3 讀寫(xiě)規(guī)則和瀏覽器差異讀selectedIndex很簡(jiǎn)單直接拿屬性值。寫(xiě)的規(guī)則也直接賦值整數(shù)即可。這里要注意幾點(diǎn)賦一個(gè)超過(guò)options長(zhǎng)度的值瀏覽器靜默忽略不會(huì)報(bào)錯(cuò)選中態(tài)保持原樣。賦負(fù)數(shù)在絕大多數(shù)瀏覽器里會(huì)被當(dāng)成取消選擇selectedIndex變成-1。但舊版本瀏覽器表現(xiàn)不一有的會(huì)把-1當(dāng)成不合法值直接忽略。若select有multiple屬性selectedIndex只返回第一個(gè)被選中的索引不能列舉全部。多選場(chǎng)景要用selectedOptions或遍歷options逐個(gè)看selected。這些邊界問(wèn)題平時(shí)不碰沒(méi)啥一旦碰上就會(huì)感受到“結(jié)構(gòu)API”的擰巴。我自己的習(xí)慣是單選下拉優(yōu)先用selectedIndex處理邏輯需要拿給后端的數(shù)據(jù)時(shí)再?gòu)倪x中項(xiàng)身上取value。分開(kāi)用反而兩邊都清爽。2. 讀selectedIndex的高頻業(yè)務(wù)場(chǎng)景聯(lián)動(dòng)、向?qū)?、列表選中態(tài)2.1 聯(lián)動(dòng)下拉為什么用索引比value省心聯(lián)動(dòng)下拉是selectedIndex出現(xiàn)最多的場(chǎng)景。比如選省份聯(lián)動(dòng)城市選一級(jí)分類聯(lián)動(dòng)二級(jí)分類。傳統(tǒng)寫(xiě)法是監(jiān)聽(tīng)change事件拿到當(dāng)前選中的省份再去請(qǐng)求或從本地?cái)?shù)據(jù)里篩城市。用value寫(xiě)的話代碼長(zhǎng)這樣const provinceSelect document.querySelector(#province); const citySelect document.querySelector(#city); provinceSelect.addEventListener(change, () { const provinceValue provinceSelect.value; citySelect.innerHTML ; const cities cityMap[provinceValue] || []; cities.forEach(city { const opt document.createElement(option); opt.value city.code; opt.textContent city.name; citySelect.appendChild(opt); }); });用selectedIndex寫(xiě)則可以完全不依賴value里的業(yè)務(wù)編碼provinceSelect.addEventListener(change, () { const idx provinceSelect.selectedIndex; citySelect.innerHTML ; const cities cityList[idx] || []; // 后續(xù)渲染邏輯一致 });兩種方式都能跑。差別在哪在數(shù)據(jù)結(jié)構(gòu)的穩(wěn)定性上。如果后端接口給的城市數(shù)據(jù)是按省份數(shù)組的索引對(duì)齊的用value反而要做一次indexOf查找。更關(guān)鍵的是當(dāng)value的編碼規(guī)則調(diào)整比如從數(shù)字編碼改成省份拼音如果你只在展示層用value去當(dāng)下標(biāo)后續(xù)維護(hù)成本一下就上來(lái)了。直接用selectedIndex對(duì)應(yīng)數(shù)組下標(biāo)結(jié)構(gòu)和數(shù)據(jù)源對(duì)齊改數(shù)據(jù)時(shí)幾乎不用動(dòng)邏輯。2.2 步驟向?qū)Ш捅韱畏植狡饔涀∮脩糇叩侥囊徊阶鲞^(guò)多步表單的人應(yīng)該都碰過(guò)“當(dāng)前步驟指示器”。有些產(chǎn)品用下拉框來(lái)切換步驟尤其是批量配置場(chǎng)景選第幾步就展示對(duì)應(yīng)步驟的區(qū)塊。這種地方用selectedIndex記錄步驟位置再合適不過(guò)。我做過(guò)一個(gè)某跨平臺(tái)系統(tǒng)的配置向?qū)ё髠?cè)是一個(gè)select右側(cè)是步驟面板。用戶切到第3步右側(cè)顯示第3步內(nèi)容還要記住他是否訪問(wèn)過(guò)第4步。這時(shí)候我用selectedIndex作為“步驟指針”配合一個(gè)數(shù)組去記錄每個(gè)步驟的完成狀態(tài)const stepSelect document.querySelector(#stepSelector); const stepStatus [false, false, false, false, false]; stepSelect.addEventListener(change, () { const current stepSelect.selectedIndex; stepStatus[current] true; renderStepPanel(current); updateVisitedFlag(stepStatus); });如果用value來(lái)記錄就得定義step-1、step-2這類約定還得解析字符串。selectedIndex天然就是數(shù)字跟數(shù)組下標(biāo)、步驟編號(hào)天然同構(gòu)少掉了整個(gè)parse環(huán)節(jié)。這個(gè)場(chǎng)景里它就是最順手的那把刀。2.3 表格行選中與下拉選項(xiàng)的同步還有一個(gè)我近期才摸索出來(lái)的妙用下拉列表和表格行選中做雙向同步。比如頁(yè)面上有一個(gè)表格每行數(shù)據(jù)對(duì)應(yīng)下拉里的一個(gè)選項(xiàng)用戶既可以直接在下拉里選也可以點(diǎn)擊表格行切狀態(tài)。下拉被程序化切換到某行時(shí)我需要高亮對(duì)應(yīng)表格行。這時(shí)selectedIndex的價(jià)值在于它本身就是“行號(hào)”。我只需要tableRowClickHandler(rowIndex) { mySelect.selectedIndex rowIndex; highlightTableRow(rowIndex); } mySelect.addEventListener(change, () { const row mySelect.selectedIndex; highlightTableRow(row); });不需要維護(hù)“選中的業(yè)務(wù)主鍵 - 行號(hào)”的映射關(guān)系。第一版我用的是valueid映射后來(lái)發(fā)覺(jué)純屬多余因?yàn)橄吕樞蚝捅砀耥樞蚴峭粋€(gè)數(shù)據(jù)源渲染出來(lái)的索引天然一一對(duì)應(yīng)。這個(gè)場(chǎng)景讓我對(duì)selectedIndex徹底改觀它不是老掉牙的舊API而是恰到好處的輕量工具。3. 動(dòng)態(tài)增刪option后selectedIndex為什么最容易翻車3.1 一次實(shí)打?qū)嵉牟瓤酉雀膐ptions再賦值下標(biāo)對(duì)不上了有一回做一個(gè)多級(jí)篩選器邏輯是第一個(gè)下拉選分類第二個(gè)下拉的選項(xiàng)根據(jù)分類動(dòng)態(tài)生成。為了用戶體驗(yàn)我保留了用戶之前選中過(guò)的二級(jí)選項(xiàng)切換一級(jí)分類時(shí)先備份當(dāng)前二級(jí)索引重新生成選項(xiàng)后嘗試恢復(fù)。代碼如下const backupIndex secondSelect.selectedIndex; buildOptions(secondSelect, newList); secondSelect.selectedIndex backupIndex;看上去沒(méi)問(wèn)題但實(shí)測(cè)中發(fā)現(xiàn)一個(gè)詭異現(xiàn)象有時(shí)候恢復(fù)的選項(xiàng)和用戶之前看到的不是同一個(gè)。排查半天發(fā)現(xiàn)問(wèn)題不在恢復(fù)那一步而在備份那一步——我在重新生成選項(xiàng)之前備份的是舊列表的索引可舊列表和新列表的內(nèi)容排序完全不一樣。比如舊列表第3項(xiàng)是“廣東”新列表按拼音重排后第3項(xiàng)變成了“北京”。索引位置一樣但含義完全不同。這就是典型的下標(biāo)體系被打破的案例。selectedIndex是位置敏感的一旦options數(shù)組結(jié)構(gòu)變化舊索引就失效了。解決方案不是硬恢復(fù)索引而是備份業(yè)務(wù)主鍵重建后先按主鍵找新位置再賦值const backupValue secondSelect.value; buildOptions(secondSelect, newList); restoreSelectByValue(secondSelect, backupValue);專門(mén)寫(xiě)了一個(gè)restore函數(shù)里面遍歷options找匹配value。這函數(shù)前面說(shuō)過(guò)value失效場(chǎng)景很少所以在動(dòng)態(tài)列表里value更可靠。這件事之后我的紅線是靜態(tài)列表用selectedIndex順手動(dòng)態(tài)列表優(yōu)先用value。3.2 HTMLCollection實(shí)時(shí)刷新帶來(lái)的“隱式位移”另一個(gè)更隱蔽的坑options是個(gè)實(shí)時(shí)集合你對(duì)它做增刪操作索引會(huì)立刻重新編號(hào)。比如當(dāng)前選中第5項(xiàng)下標(biāo)4此時(shí)刪掉第1項(xiàng)你選中的項(xiàng)自動(dòng)變成第4項(xiàng)下標(biāo)3selectedIndex跟著變。這個(gè)行為本身符合直覺(jué)但如果你沒(méi)有意識(shí)到“索引是實(shí)時(shí)變化的”就容易寫(xiě)錯(cuò)邏輯。比如const delIndex select.selectedIndex; select.remove(delIndex); // 此時(shí)如果刪的是前面項(xiàng)原選中項(xiàng)下標(biāo)已經(jīng)變了如果在刪除后立刻用舊的delIndex去處理原選中項(xiàng)拿到的一定是另一項(xiàng)或undefined。我的做法是凡是涉及刪除后要拿到原選中項(xiàng)先保存元素引用const selectedOption select.options[select.selectedIndex]; select.remove(select.selectedIndex); // 后續(xù)處理用selectedOption而不是索引類似的問(wèn)題也會(huì)出現(xiàn)在appendChild插入選項(xiàng)時(shí)。插入位置靠前后面所有選項(xiàng)索引都往后挪此時(shí)selectedIndex如果沒(méi)重設(shè)雖然指向的option沒(méi)變因?yàn)镈OM引用沒(méi)變但與用戶視覺(jué)上的“當(dāng)前選中順序”就出現(xiàn)了不一致。交互層觸發(fā)的事件和選中態(tài)的對(duì)齊需要手動(dòng)處理。3.3 空列表和重置時(shí)機(jī)的配合問(wèn)題動(dòng)態(tài)下拉還有個(gè)常見(jiàn)要求當(dāng)上級(jí)選項(xiàng)切換后下級(jí)列表清空并處于“請(qǐng)選擇”狀態(tài)。清空操作一般是innerHTML此時(shí)selectedIndex自動(dòng)變成-1。這操作沒(méi)問(wèn)題問(wèn)題在某些人喜歡在后面手動(dòng)補(bǔ)一個(gè)“請(qǐng)選擇”選項(xiàng)然后選中它select.innerHTML option value請(qǐng)選擇/option; select.selectedIndex 0;這么寫(xiě)沒(méi)問(wèn)題。但如果是先appendChild加了一個(gè)“請(qǐng)選擇”再立刻調(diào)用select.value嘗試選中它在某些瀏覽器里會(huì)因?yàn)関alue是空字符串且option的value屬性也是空字符串而命中但在另一些瀏覽器里select.value賦值空字符串可能不觸發(fā)選中邏輯。我后來(lái)統(tǒng)一用selectedIndex0來(lái)完成這個(gè)“重置到占位項(xiàng)”的動(dòng)作完全不依賴value跨瀏覽器穩(wěn)定得多。這類問(wèn)題不細(xì)測(cè)很難發(fā)現(xiàn)尤其當(dāng)你在一個(gè)復(fù)雜的表單里同時(shí)用了多種重置方式出bug時(shí)根本不知道該懷疑誰(shuí)。建議團(tuán)隊(duì)里約定一種固定的重置寫(xiě)法少讓成員自由發(fā)揮。4. selectedIndex的邊界情況和多選陷阱4.1 selectedIndex -1是真空態(tài)還是假空態(tài)selectedIndex為-1表示沒(méi)有任何選項(xiàng)被選中。這個(gè)值在業(yè)務(wù)里常用于表達(dá)“未選擇”狀態(tài)比如沒(méi)填完的表單項(xiàng)校驗(yàn)時(shí)判斷selectedIndex是否等于-1就知道用戶有沒(méi)有選過(guò)。但這里有一個(gè)讓人迷惑的點(diǎn)明明我設(shè)置了selectedIndex-1頁(yè)面上卻還能看到第一項(xiàng)是“選中”的高亮樣式。原因在于大部分瀏覽器的默認(rèn)行為如果select沒(méi)有選項(xiàng)或沒(méi)有選中項(xiàng)且沒(méi)有寫(xiě)required瀏覽器在用戶不操作時(shí)會(huì)把第一個(gè)可選項(xiàng)當(dāng)成默認(rèn)顯示項(xiàng)。這是瀏覽器“視覺(jué)回退”不是DOM狀態(tài)真的改了。我在某表單驗(yàn)證邏輯里就踩過(guò)下拉框是允許不選的我設(shè)置了selectedIndex-1然后校驗(yàn)通過(guò)結(jié)果用戶沒(méi)做任何操作提交時(shí)select.value取出來(lái)的卻是第一項(xiàng)的value后端也收到了導(dǎo)致一條不完整的記錄入庫(kù)。當(dāng)時(shí)的修復(fù)很簡(jiǎn)單校驗(yàn)時(shí)不只看selectedIndex還要看用戶有沒(méi)有真實(shí)交互過(guò)let userInteracted false; select.addEventListener(change, () { userInteracted true; }); // 提交時(shí) if (!userInteracted || select.selectedIndex -1) { // 當(dāng)作未選擇 }很多同學(xué)喜歡用“視覺(jué)上是否默認(rèn)選中第一項(xiàng)”來(lái)判斷有沒(méi)有選這個(gè)思路在原生select里是危險(xiǎn)的。視覺(jué)高亮不代表selectedIndex有值。如果必須讓用戶強(qiáng)制選擇建議options里顯式加一個(gè)disabled的“請(qǐng)選擇”占位項(xiàng)并且不要給它value。這樣能規(guī)避很多莫名其妙的默認(rèn)選中問(wèn)題。4.2 disabled選項(xiàng)會(huì)讓索引讀起來(lái)疑似“跳位”下拉里經(jīng)常有不可選項(xiàng)比如“該地區(qū)已停運(yùn)”。disabled的option依然占據(jù)一個(gè)索引位置但用戶永遠(yuǎn)無(wú)法選中它。selectedIndex讀出來(lái)的位置是“當(dāng)前選中的那個(gè)合法項(xiàng)的索引”。如果你以為“第一項(xiàng)就是下標(biāo)0”但第一項(xiàng)其實(shí)是disabled的占位項(xiàng)讀出來(lái)還會(huì)是0嗎實(shí)測(cè)如果第一項(xiàng)disabled且沒(méi)選中任何項(xiàng)selectedIndex在大部分瀏覽器里是-1但在用戶已經(jīng)選中第二項(xiàng)之后再通過(guò)程序把第一項(xiàng)改為disabledselectedIndex依然是第二項(xiàng)的索引比如1頁(yè)面視覺(jué)也保持第二項(xiàng)選中。這里不會(huì)出現(xiàn)位移只是你要注意渲染綁定索引時(shí)不要假設(shè)“options[i]一定可選”做高亮等邏輯前要主動(dòng)檢查option.disabled。另外有一種業(yè)務(wù)偽需求“用戶選中了A項(xiàng)后B項(xiàng)自動(dòng)不可選”。很多人會(huì)去改option的disabled屬性。這沒(méi)問(wèn)題但是disabled改動(dòng)不會(huì)觸發(fā)change事件用戶已經(jīng)選中的C項(xiàng)也不受影響。如果你希望通過(guò)狀態(tài)聯(lián)動(dòng)自動(dòng)切換選中項(xiàng)還是得手動(dòng)改selectedIndex。我在一個(gè)聯(lián)動(dòng)配置里就是先改disabled再判斷當(dāng)前選中項(xiàng)是否變成disabled如果是再selectedIndex往下一個(gè)可選項(xiàng)目移動(dòng)邏輯寫(xiě)起來(lái)比預(yù)想的多幾行但這些細(xì)節(jié)躲不過(guò)。4.3 多選select里讀selectedIndex的“誤導(dǎo)性”多選模式下selectedIndex返回的是第一個(gè)被選中項(xiàng)的下標(biāo)。聽(tīng)起來(lái)像是個(gè)便利功能實(shí)際上最容易被誤用。比如你寫(xiě)了const first mySelect.selectedIndex;下意識(shí)以為拿到了第一個(gè)選中項(xiàng)。其實(shí)如果用戶選的順序是第3項(xiàng)、第1項(xiàng)selectedIndex返回的是1因?yàn)橄聵?biāo)小的先被選中而不是3。你要是按“第一個(gè)被點(diǎn)選”的語(yǔ)義去理解就錯(cuò)了。多選場(chǎng)景我建議直接繞開(kāi)selectedIndex用Array.from(select.selectedOptions)拿所有選中項(xiàng)或者遍歷options過(guò)濾selected。這兩個(gè)API在多選里語(yǔ)義明確不會(huì)產(chǎn)生歧義。selectedIndex這個(gè)屬性天生是單選模型的產(chǎn)物放到多選里就只是個(gè)兼容性殘留別拿它當(dāng)業(yè)務(wù)邏輯的主干。5. 框架時(shí)代selectedIndex還剩下哪些用武之地5.1 React受控組件里為什么基本不用它React的受控select用的是value配合onChange事件。你寫(xiě)select value{city} onChange{...}React內(nèi)部會(huì)遍歷options去匹配value對(duì)應(yīng)的項(xiàng)并設(shè)置selected。這時(shí)候你如果自己再去動(dòng)selectedIndex麻煩就來(lái)了。受控組件要求“狀態(tài)唯一來(lái)源”。value存的是業(yè)務(wù)值selectedIndex只是渲染結(jié)果。如果你在事件里寫(xiě)了類似selectEl.selectedIndex 1React下次渲染時(shí)發(fā)現(xiàn)value還是原來(lái)的值會(huì)再用value重新設(shè)置選中態(tài)你手動(dòng)指定的索引就被覆蓋了。這就是標(biāo)題開(kāi)頭那個(gè)群里提問(wèn)的人遇到的問(wèn)題——他的value邏輯和selectedIndex邏輯互相打架因?yàn)镽eact的渲染循環(huán)會(huì)不斷用value“糾正”DOM。在React里如果需要用索引邏輯正確姿勢(shì)是把索引存進(jìn)state再通過(guò)value{options[idx]?.value}映射到受控屬性上。這樣索引只是業(yè)務(wù)計(jì)算的臨時(shí)量最終落到的還是value這個(gè)唯一狀態(tài)。硬要在React里用selectedIndex等于和框架的渲染模型對(duì)著干。5.2 Vue的v-model和原生selectedIndex的兼容經(jīng)驗(yàn)Vue這邊情況類似v-model對(duì)select的處理方式與React大同小異也是基于value做匹配。但在Vue的非受控組件或需要直接操作DOM的指令場(chǎng)景里selectedIndex還有空間。比如我寫(xiě)過(guò)一個(gè)自定義指令作用是“讓下拉支持通過(guò)程序按索引快速切換”指令內(nèi)部就直接操作selectedIndex不依賴框架狀態(tài)const directive { mounted(el, binding) { el.selectedIndex binding.value; }, updated(el, binding) { if (el.selectedIndex ! binding.value) { el.selectedIndex binding.value; } } };這種指令適用于“下拉項(xiàng)完全由靜態(tài)模板決定、value不承擔(dān)業(yè)務(wù)含義”的場(chǎng)合。比如一個(gè)純展示用的序號(hào)選擇器選項(xiàng)是“第1頁(yè)”“第2頁(yè)”這種用value反而要跟著頁(yè)面文案變。此時(shí)selectedIndex當(dāng)“頁(yè)碼指針”用非常順手。但要注意Vue更新DOM是異步的updated鉤子里拿到的el可能還在舊狀態(tài)。實(shí)測(cè)經(jīng)驗(yàn)多數(shù)情況下updated鉤子里直接賦值selectedIndex不會(huì)出錯(cuò)但如果選項(xiàng)數(shù)量在數(shù)據(jù)變化時(shí)同步增減了索引位置可能和應(yīng)用層期望不一致。穩(wěn)妥做法是在nextTick之后再做索引修正。這個(gè)坑不大但碰到一次就夠你記一輩子。5.3 無(wú)框架環(huán)境里selectedIndex還是最優(yōu)解之一如果項(xiàng)目還在用原生JS或者你只是在一個(gè)獨(dú)立的小組件里實(shí)現(xiàn)一個(gè)簡(jiǎn)單交互selectedIndex依然是最輕量的API。沒(méi)有框架的對(duì)比沒(méi)有響應(yīng)式的狀態(tài)流轉(zhuǎn)你要做的不過(guò)就是“選中第幾個(gè)”這件事一行代碼解決。比如我寫(xiě)過(guò)一個(gè)批量導(dǎo)入的預(yù)覽組件文件解析后得到的字段順序映射到下拉選項(xiàng)用戶調(diào)換字段時(shí)選中某個(gè)字段就對(duì)應(yīng)數(shù)據(jù)源列號(hào)。這個(gè)場(chǎng)景value完全無(wú)意義selectedIndex直接就是列號(hào)fieldSelect.addEventListener(change, () { const colIndex fieldSelect.selectedIndex; previewTable.dataset.columnMap colIndex; });代碼量少得不像話。你非要用value也不是不行但你得維護(hù)columnMap映射表純純給自己加戲。5.4 封裝一個(gè)安全的索引操作小工具為了兼顧各種場(chǎng)景我后來(lái)把自己常用的一套邏輯封裝成了一個(gè)極簡(jiǎn)函數(shù)專門(mén)處理“按索引選中”的安全操作function safeSetSelectedIndex(selectEl, index, fallbackIndex 0) { if (!selectEl) return -1; if (index 0 index selectEl.options.length) { selectEl.selectedIndex index; return index; } if (fallbackIndex 0 fallbackIndex selectEl.options.length) { selectEl.selectedIndex fallbackIndex; return fallbackIndex; } selectEl.selectedIndex -1; return -1; }它只做一件事檢查范圍賦索引失敗回退。進(jìn)入這個(gè)工具函數(shù)前業(yè)務(wù)邏輯先想清楚是備份索引還是備份value。如果是動(dòng)態(tài)列表我建議先備份value重建后再用value匹配索引最后調(diào)用safeSetSelectedIndex完成定位。這套組合拳寫(xiě)下來(lái)基本覆蓋了我遇到過(guò)的全部場(chǎng)景靜態(tài)索引、動(dòng)態(tài)變化、越界保護(hù)、回退兜底。自己團(tuán)隊(duì)里用它替換了大量繁瑣的if判斷出錯(cuò)率比之前手動(dòng)寫(xiě)低了不少。6. 幾個(gè)實(shí)戰(zhàn)命令和代碼片段可以直接抄6.1 輪播式切換下一項(xiàng)有一種需求是點(diǎn)擊按鈕切換到下拉的下一項(xiàng)循環(huán)滾動(dòng)。用selectedIndex寫(xiě)起來(lái)很順手document.querySelector(#nextBtn).addEventListener(click, () { const select document.querySelector(#demoSelect); const next (select.selectedIndex 1) % select.options.length; select.selectedIndex next; select.dispatchEvent(new Event(change)); });注意最后dispatchEvent那行程序化修改selectedIndex本身不觸發(fā)change事件。如果你后續(xù)邏輯依賴change記得手動(dòng)派發(fā)。這個(gè)細(xì)節(jié)我第一次也漏了導(dǎo)致點(diǎn)擊按鈕后UI變了但聯(lián)動(dòng)沒(méi)反應(yīng)。6.2 根據(jù)選中索引設(shè)置占位提示做表單時(shí)經(jīng)常遇到下拉為空需要顯示灰色提示選中后提示消失。selectedIndexCSS類可以這樣配合const select document.querySelector(#reqSelect); function updatePlaceholder() { select.classList.toggle(is-empty, select.selectedIndex -1); } select.addEventListener(change, updatePlaceholder); updatePlaceholder();CSS類單獨(dú)控制顏色和邊框不需要在每次渲染時(shí)寫(xiě)innerHTML。干凈利落。6.3 selectedIndex與鍵盤(pán)上移下移的配合原生select在聚焦?fàn)顟B(tài)下按上/下方向鍵就會(huì)自動(dòng)切換選中項(xiàng)而且會(huì)觸發(fā)change事件。在某些不支持原生樣式的自定義下拉組件里我們常常要模擬這個(gè)行為。簡(jiǎn)化版可以這樣寫(xiě)customSelect.addEventListener(keydown, (e) { if (e.key ! ArrowDown e.key ! ArrowUp) return; e.preventDefault(); const dir e.key ArrowDown ? 1 : -1; const nextIndex Math.min( Math.max(realSelect.selectedIndex dir, 0), realSelect.options.length - 1 ); realSelect.selectedIndex nextIndex; syncCustomUI(); });把真實(shí)但隱藏的select當(dāng)作狀態(tài)容器selectedIndex負(fù)責(zé)“當(dāng)前在哪一項(xiàng)”UI層負(fù)責(zé)畫(huà)出來(lái)數(shù)據(jù)層從options里取value。這個(gè)架構(gòu)在無(wú)框架環(huán)境下特別穩(wěn)我做了好幾個(gè)自定義下拉都沿用這個(gè)思路。7. 我用了這么多年最后留下三條經(jīng)驗(yàn)第一靜態(tài)結(jié)構(gòu)里大膽用selectedIndex動(dòng)態(tài)結(jié)構(gòu)里三思而后行。選項(xiàng)一旦可能增刪改排序索引就失去了穩(wěn)定性轉(zhuǎn)而以value備份為佳。第二程序改selectedIndex不會(huì)觸發(fā)change事件需要手動(dòng)派發(fā)或顯式調(diào)用業(yè)務(wù)函數(shù)。這個(gè)坑在原生環(huán)境極其高頻每次寫(xiě)完索引賦值先問(wèn)自己一句后續(xù)邏輯依靠事件嗎依靠就補(bǔ)上dispatch不依靠就確認(rèn)調(diào)用鏈。第三別在受控組件里跟框架搶方向盤(pán)。React或Vue都已經(jīng)把value作為狀態(tài)的唯一來(lái)源你在外面手動(dòng)動(dòng)selectedIndex大概率會(huì)被下一次渲染覆蓋。要玩索引就在state層玩映射成value再進(jìn)組件。如果你之前從沒(méi)認(rèn)真用過(guò)selectedIndex翻翻手頭的舊代碼把它從“曾經(jīng)用過(guò)但忘了”的收藏夾里撈出來(lái)弄懂它和value的邊界。這種老API不是沒(méi)用了它們只是被框架遮住了太久。真正需要的人會(huì)在某個(gè)深夜的聯(lián)動(dòng)下拉bug現(xiàn)場(chǎng)跟它重逢然后感嘆一句原來(lái)你一直在等我。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
一起草欧美| 麻豆天美在线喷水AV| 国产吹潮女在线观看| 91色伦| 欧美特大AA级黄片| 蘋果手機免費看成人Av| 国产精品久久久久久片| 欧美色偷拍| 97se亚洲综合自| 中国东北熟女老太婆内谢| 精品久久久久瑟瑟| 国内偷自视频区视频综合 | 99热国产| 国产精品无套内谢| 97超视频在线观看| 国产亚洲精品A在线观看下载| 欧美性爱另类综合| 啊啊啊在线看| 92午夜免费福利视频| 久久综合女优| 黄aaaaaaaaaaaaaaaaaa色网站| 亚州人妻| 91快色色色色色| 亚洲精品欧洲精品| 99热久| 97国产精品一区二区传媒公司| 粉嫩不卡一区二区性爱| 密臀成人视频久久久| 色九九九| 亚洲色阁| 色穴精品| 欧美综合91| 欧美 中文字幕 一区| 9Ⅰ超碰| 亚洲男人bt天堂| 91天堂| 大稥蕉免费视频这里只有精品| 亚洲精品97在线| 欧美日韩大黄片| 蜜桃视频成a人v在线| caorenqi shipin| 物尤视频一区二区| 女生91网站| 在线无码操| 亚洲综合网图| 国产精品一区二区三区免费视频| 午夜福利一区二区影院| 动漫片子网站3黄| 综合亚洲欧美| 5278欧美一区二区三区| 亚洲欧美国产中文字幕| 丁香色狠狠色综合久久小说| 探花精品视频| 很很很很操| 久久中文字幕不卡人妻| 久久久久13| 91久久精品美女高潮喷水| 日韩无码精品综合久久| 欧美不卡在线美女| 天堂综合网| 911粉嫩人妻| 丝袜视频一区二区在线播放国产中文| 97碰久久| 中文字幕一区二区三区人妻少妇在线| 久久成年片色大黄全免费网站| 色情婷婷| 大香蕉淫人网| 成人欧美一区二区三区黑人一| q2午夜理论片夜色av| 成人a级高清视频在线观看| 国产精品女同| 美女操逼A A| 99re6国产精品99re在线| 国产精品对白自产拍| 午夜无码精品免费看性色| 99re99视频在线免费观看| 毛片一区二区| 天美国产精品| 欧美高清无码免费视频高清版| 婷婷丁香六月| 伦理第一页| 五月色丁香| 亚欧美综合| 性爱视频无打码在线观看| 不卡人妻少妇精品毛片一区23区视频| 日韩免费簧片| 98精品国产乱码久久久久久| 极品白嫩美女白浆成人福利在线看| 无码久| 日本人妻伦在线中文字幕| 综合国产97| 国产精品爆乳懂色蜜乳| 欧美亚洲一区二区久久久婷精品大包诱| 成·人免费午夜在线观看| 久久久蜜桃一区二区三区| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 天天躁夜夜躁狠狠躁AV| 日韩欧美成人性爱在线| 天操天操夜操夜月操月年年操操| 亚洲图片欧洲图片aⅴ| 蜜桃午夜视频一区二区 | 亚洲日韩国产欧美综合v| 98超碰日本| 大香蕉免费乱伦视频| 欧美色道啊| 亚洲国产日韩欧美熟妇在线| 麻豆美女丝袜人妻中文| 东京热不卡视频| 欧美成人黄网色网站| 后入福利| av一区二区三区 中文| 高潮9999外国| julia在线观看久久| 青娱乐淫乱1314| 第四色色综合91| 成年人黄色小视频网站| 96国产精品| 中文字幕二区日韩天堂| 欧美后入| 天天α片| 美国一区二区三区视频| 天天综合网合集91| 蜜臀少妇一区二区| 日本黄色精品专区网站| 狠狠躁天天躁日日躁97| 久久久久免费少妇| 2017人人操,人人摸| 中文一区二区| 红杏大香蕉| 超碰97综合| 亚洲综合113页| 爆操无码| 人妻丝袜美腿中文字幕| 欧美天堂第二区| 六十路日本| 乱伦熟女论坛| 9 1超碰九色| 国产91美女高潮| 性爱乱伦视频免费| 欧美亚洲首页| 亚爽爽爽爽爽爽爽爽| 欧美αv.com| 风间由美日韩欧美久久| 91色五月俺来也| 精品一区二区综合熟妇| 97在线观看免费视频| 日本一天色道久久久精品视频| 日本高清有码网址视频| 老熟女乱伦片| 一本一道久久综合久久| 美腿丝袜高跟网免费视频免费视频| 日本欧美国内在线| 五月天久久综合网| 91麻豆天美传媒在线| 黄色小说亚洲| 五月丁香激情综合| 八人操人人摸人人看| 欧美亚洲综合色| 夜夜爽夜夜| 色眯眯av| 韩国三级三级BD在线| 亚洲Av无码成人精品国产| 久久国产乱子伦精品免费女,网站| 久久夜嗨| 亚州欧美另类| 婷婷中文网| 欧美福利视频啊啊啊啊| 色香av| 国产色精品午夜大片| 欧美成人性爱视频在线播放 | 亚洲天天自拍| 偷拍综合亚洲| 亚洲人妻熟妇三十三区| 91九色在线| 亚洲va有码在线天堂| 97精品免费| 天天综合91入口| 综合久久99亚洲人妻中文在线| 精品妇女一区二区三区| 开心五月激情网| 欧美网站免费| 中文字幕亚韩| 黄色免费网页无码| 999亚洲国产视频| 国语对白露脸XXXXXX| 国产欧美日产一区二区三区 - 国产欧美日 | 成人久久无码www| 激情五月天网站| 人妻精品一区二区在线| 久久一级无码精品毛片6| 100啪啪视频大全| 欧美AB在线| 1024精品在线| 色色九区| 夜夜欧美 | 欧美1区二区三区公司| 九九热三级片| 一区二区视频在看| 亚洲av总站| 九九热免费国产视频婷婷伊人| 国产动漫操逼视频| 九九99精品| 精品亚洲国产成人AV制服丝袜| 中国国产精品一区视频| 淫荡熟女乱伦网| 欧美探花网| 成人26uuu| 国产精品久久久吖| 日本 色 导航| 国产精品美女在线一区| 亚洲熟女性高潮久久久| 日本欧美一区二区三区免费| 日韩亚洲中文有码视频| 人人操人人插人www| 久久五月天婷婷丁香中文字幕| 欧美成人免费在线观看| 97啪啪| 毛片久久| 曰本人妻人人澡人人夹| 色综合久久久久| 色五月亚洲| 婷婷五月天av| 自拍盗摄一区| 青青欧洲黑| 久久超碰亚洲人| 美女的肌被草喷水视频| 久久一二三四五六七八九区区| 99只有精品| 330dv亚洲成年视频网| 97超碰资源网| 性生活性生大爱77AV国产| 亚洲双插| 伊人国产AV| 性一级黄色录像片网站导航| 黑人娇小av在线播放| 粉嫩av平台| 国产精品熟女九色九色蜜臀| 亚洲砖码砖专无区2023| 久久思思热| 91成人久久| 91精品黄在线观看| 国产天天骚| 综合天天网| 夜夜福利| 老熟女综合网 | 欧美熟妇精品黑人巨大91| 台湾佬大香蕉| 久操精品| 色一色综合网| 校园春色综合| 日韩人妻精品久久久久| 诱惑人妻欧美一区在线播放| 精品综合久久久久久97| 易易A毛视频| 日韩视频精品在线观看| 综合色99| 内射中出日韩在线观看视频| 男人天堂最新手机版在线青青草| 尤物视频视频官网| 日本护士高潮| 热天堂一区二区| 久久熟女久| 欧美日日人人天天| 欧美性生活免费网| 亚洲综合九九| 试看60秒| 欧美91精品国产自产| www.av在线视频| 六月丁香婷| 久久久久久久久久久久久久久乱码 | 91国产精品熟女| 欧美78| 99热在线播放| 亚洲美女自拍偷拍视频| 高清不卡国产| 四虎在线视频| 人妻 中文 日韩| 欧美日韩夜夜| 啊啊啊啊,啊啊好多水| A级在线视频| 日本操BAV| 亚洲高清视频在线观看| 免费成人自拍视频在线| 狠狠色婷婷777| 91欧美美女日韩国产婷婷| 91日韩国产欧美亚洲另类精盘州至城都| 日韩一区二区精彩视频| 自拍偷拍 日韩欧美| 成人乱人伦一区二区| 久久一级无码精品毛片6| 色诱avtt| 国产精品免费久久久久久久久久| 亚洲国产欧美日韩人妻日中文| 日本国产欧美高清在线| 国产农村妇女精品一| 国产少妇肉丝在线观看| 一区二区三区成人 | 日本成人A片网站| 中文字幕成人| 国产诱惑| 成人美女av| 熟妇人妻一区二区三区| 天天射日日干| 久久久久成人蜜桃精品| 国产一级αv免费看片| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 操逼内射干逼白丝91| 一区二区三区一亚洲中文字幕、综合区灬 | 免费看国产曰批40分钟怎么下载| 成人网欧美风情| 国产久久久| 国产日韩欧美三级片| 日韩大香蕉精品在线视频| 日本羞羞的视频在线播放| 激情五月综合| 国产又粗又长又大的视频| 亚洲图片欧洲图片aⅴ| 老汉网| 久久久久久久久久va| Av色五月| 秋霞操逼片| 99在线观看视频在线高清| 夜夜嗨av午夜成人| 91九九| 波多野结衣一级视频| 乱性AV| 精品国产Av无码久久久伦古装| 91天堂丝袜美腿| 嗯啊抽插大香蕉网页| 九九英色视频| 国产丝袜欧美在线视频| 你草精品在线视频| 久久av一级av少妇av高潮| 今日头条成人一区二区三区四虎精品| 国产成人 综合亚洲 天堂| 色综合中文字幕不卡| 免费成人自拍视频在线| 久久久久久久久久久久久久久乱码| 夜夜嗨视频| 欧美大香蕉卡久久| 中文字幕国产在线天堂| 少妇被玩视频二三区| 日韩欧美性爱电影在线观看| 青青久操| 欧美精品xxxwww| 天天影视网色欲色香| 日韩少妇一区二区三区| 青草伊人网| 99日韩| 精品欧美乱码久| 女人高潮抽搐喷水视频网站| 精品人妻中文字幕高清| 人人妻人人色| 久久夜黄色无码A级大片| 欧美人妻另类在线| 六月丁香五月婷婷| 国产真乱mangent| 99re只有精品| 日韩AV一起草| 好爽视频在线观看| 18一区二区三区| 亚洲欧洲日本精品中文a∨| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 超碰在线91| 91麻豆天美| 欧美大香蕉97| 国产熟女乱论| suv精产一二三区| 九九九久千久久激情蜜桃在线看 | 色色色色网站| 伊人九九九| 亚洲成人一二三区| 日韩色欲久久一二三四区| 日本精品九九九| 99在线观看| 无码不卡亚洲成?人片| 二对二中文字幕。| 操91| 综合在线导航一区| 久草免费在线视频| 亚州男人的天堂| 色墦五月丁香| 91久久九九精品国产综合| 日韩欧美偷拍美女视频| AV中文在线| 中文字幕乱码人妻二区三区| 精品在线78| 欧美综合第一| 色色99| 操操逼视频| AV天黑人| 爱欲AV| 日本 欧美 国产一区| 国语精品av| 97色涩| 久久丁香五月婷婷| 色综合天天| 多乙久久久久久| 91成人久久 | 欧美日韩国产高清在线一二三区| 夜夜精品视频| 在线小视频| 日韩欧亚太美不卡| 欧美中出1| 亚洲国产精品无码AV久久久| 懂色影视久久| 9999亚洲电影| www.色操逼| 人人做天天爱| 99热这里都是精品| nuu12国产麻豆精品| 熟女丰满人妻一区| 久操操| 操逼天美3区| 91人人| 久久99久久99精品天美传媒棢·纸:.| 国产极品久久久| 夜夜肏2021| 婷婷色导航| 操逼www.| 澳门黄片一香蕉视频| 欧美色97| 夜夜国自区| 欧美日动态视频| 国产精品青青草| 欧美亚洲中文字幕| 色官网色综合| 男人的天堂午夜av| 婷婷超| AV女优男人的天堂| 啊啊啊啊好大好硬啊啊啊啊啊 | 91国模| 欧美,亚洲,日韩,v,天堂,手机在线观看| 亚洲一二三精品久久网| 人妻熟女字幕一区二区| www成人啪啪18秘 免费| 国产精品一级毛片不卡视| 中文字幕av亚洲精品| 欧美成人性活片| 亚洲欧洲日韩中文字幕一区| 美女丝袜激情小说| 久热久操| 欲香欲色天天天综合和网| 97亚洲国产影视| 久久久久成人蜜桃精品| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 青青操视频在线| 亚洲免费97免费| 成人女人国产| 国产黄色动态精品| 夜夜操av亚洲一区二区| 国产性感骚丝袜在线| 久久理论字幕视频| 欧美日韩国第一区| 嗯……啊…嗯嗯…啊…好舒服| 97在线免费看| 射丝袜高跟鞋99| 爱干爱射网啊啊啊| 国产农村妇女精品一二区| 欧美大香蕉卡久久| 欧美在线伊人色| 久久发布国产伦子伦精品| 中文字幕老熟妇黄色视频| 亚洲另类久操网| 国产怡红院| 中文字幕在线观看第二页| 暖暖精品二区三区观看| 免费看污网站| 天天内射| 欧美草草| 婷婷国产精品一区二区| 日韩91网| 欧美一品道| 九九天堂| 熟妇人妻一区二区三区| 91天美传媒在线| 天天操天天7| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 免费超碰97久久| 9999久久久| 日韩国产乱子伦App| 色爱天堂| 亚洲欧洲久久天堂| 亚洲无码国产精品久久| 国产高清自拍视频| 亚洲一区中文字幕一区| 二级毛片| 国产成人自拍视频在线| 中日韩一区二区三区欧美| 秋霞免费无码视频日韩A片| 狠狠操官网| 免费在线黄片视频| 狠狠综合| 磁力99AV| 狠久久| 蜜臀久久99精品久久久久久-DVD原版全| 欧美精品成人一区二区在线观看 | 国产后入式在线观看| 天啪| 操www| 六月丁香啪啪| 欧美72网页| 久久久精品久久| 超碰九7免费| 嫩呦国产一区二区三区AV| 婷婷视频网| 中文字幕国产精品1区| 色情亚洲日本成人| 天天色综合影视网| 日韩免费中文字幕视频| 亚洲欧美激情在线视频| 殴美综合色88| 久久青娱乐| 女性喷水高潮在线观看| 操逼逼福利视频| 中文字幕在线观看第二页| 91美女視頻| 香蕉综合网| 国产野战露脸在线播放| 久久久久成人蜜桃精品| 综合色久欲| 日本视频在线中文字幕| 久久精品国产亚洲AV片多多| 麻豆精品一区二区三区四区免费观看| 物业黑人 AV一区| 综合久久六月久久婷婷| 狠狠久久手机视频精品| 激情综合网一盗摄| 69精品人人人人| 国产一国产一级毛片古装| 久久99精品国产| 色欲日韩欧美在线一区| a片自拍直播视频| 久久爽爽精品| 女生久久网| 丰满人妻一区二区三区在线| 国产一区二区三区导航| 少妇xx精品| 亚洲精品819| 久久熟女嫩草成人片免费| 人妻精品一区二区三区| 国产精品探花在线| 青青草十区九区爱夜| 偷拍视频青青草在线视频| 一线黄色免费性爱片| 天天爽天天| 亚码激情| 亚洲极品| 日韩人妻中文视频| 色五月天AV| 97碰久久| 东北夫妻性偷拍| 99re这里| 久操大香蕉手机视频在线看| 日本免费专区| 另类天堂| 国产高清在线自在拍69| 日韩AV色图| 日韩中文字幕国产| 亚洲色宗合| 天天影视网色欲色香| 91大神电影天堂| 色综合中文字幕不卡| 一二三啪啪专区| 日本一区二区电影网站| 九九视品黄色| 淫淫总合网| 91丝袜美女| 久久人人爽人人爽人人片Ⅴ| 国产91亚洲精品一区二区三区| 果冻传媒A片一二三区| 久久精品72| 熟女自慰久久久| 欧美1727免费观看视频| 大香蕉丝袜一级片| 夜色AV无码手机在线影院| 国产精品亚洲天堂网址| 亚洲天堂精品日韩电影| 国语少妇精| 好吊色综合| 蜜臀久久久久久999| 一级啊性爱在线视频| av网站免费线看| 亚洲a色| 日本精品九九九| 天天日美女的B| 久久999久| 超碰国产情侣自拍网| 99综合视频一体| 在线看免费无码AV天堂的| 口爆吞精在线观看| 亚洲导航深夜福利| 亚洲欧洲综合成人av一区| 中文操逼字幕| 精品久久无码午夜福利| 99精品网| 一级久久久久久久久久久| 熟女高潮合集-永久久久-成人AV| 日本孕妇孕交| 中文字幕88av在线| 1024午夜激情男人的天堂| 东京热毛片调教| 老熟女91av| 天天香香欲综合| 91色噜噜狠狠| 欧美综合传媒| 69精品| 18禁免费视频| 日韩有码免费视频| 日韩精品99久久久久久中文字幕| 夜夜免费视频| 国产后入| 免费簧片在线观看| 久久国产精品一级二级三级| 一区| 色欲av国内精品久久久久久| 亚洲精品中文字幕一区在线视频| 欧苏综合色综合| 精品人妻中文字幕4399| 99热在线播放| 亚洲s在线观看| 日本 情色 1区| 91性片| A级在线视频| 思思热免费视频观看| 久久理论字幕视频| 欧美色图99| 精品人妻一区二区三区四区石在线| 天天做日日做天天欢。| 美女大乳久久久久久久女人18| 亚洲女人91| 亚洲自拍天堂| 免費人妻夜夜爽天天爽爽一区| 久久↗↗| 亚洲最新中文字幕免费| 一级做a爰片性色毛片久久| 岛国免费视频在线| 超碰国产精品无码| 免费看污网站| 无码av永久免费专区网站| 久久久久久久国产| 欧美成人都市人妻| 少妇一区二区三区精选| 国产精品乱码久久久| 婷婷情色综合网| 青青伊人这里只有精品| 青草成人免费视频一com| 搞中出视频在线观看| 亚洲操操操| 久久精品| 欧美九九九| 国产一区二区久久| 97天天爽| 成人片在线播放| 蜜乳AV.COM| 91性色| 91在线国产后入风骚翘臀美女素人| 夜夜狼人妻| www.色五月| 免费啪啪一级视频| 久久久久久亚洲Av无码| 丝袜AV一区二区三区| 99精品丰满人妻无码| 免费网色网站| 91原创在线观看| 精品久热| 人妻日日干| 曰韩操B| 久久久999| 天天综合青苹果| 日韩射图| 四虎在线免费视频| 超碰97最新人妻| 狼人综合婷婷激情四射 | 秋霞免费AV| 四虎午夜影院| 思思久热在线精品66| 成人小电影网站tex| 在线观看岛国有码| 人人玩人人添人人澡免费| 99re这里只有精品9| 91老司机精品| 亚州欧美在线| 91国产伊人大香蕉| 青操影院| 2026国产精品视频| 中文一区在线日| 成人日韩中文字幕| 宗合情欲网| 一区中文字幕二区日韩| 亚洲 欧美 中文 日韩超碰| 婷婷久久综合| 欧洲色| 天天爱天天韩国日本牛牛牛牛 | 欧美,日韩,中文,另类| AV色图| 欧美 亚洲 91| 大屁股熟女一区二区三区| 九九九九免费视频| 黄久在线| 国产熟女高潮一区二区三区| 欧美与日韩97| 一区二区三区四区在线不卡| 中文字幕一区二区三区蜜桃视频| 91操人| 精品二区三四区五电影 | 亚洲av资源| 97国产|免费| 中文字幕在线免费观看| 嗯嗯啊啊操我| 中文字幕蜜乳av| 人妻二区| 天堂а√在线最新版在线| 国产一级不卡在线观看| 强奸乱伦动态污图免费 | 男人的天堂在线有码| 激情四射婷婷四五月天| 久久精品欧美一区蜜桃| 女同性恋一区二区三区精品视频| 国内操逼视频二区| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 丁香五月激情综合国产| 色狠狠色| 91oumei| 乱日视频| a人欧美综合天堂麻豆| 91丨精品丨国产丨丝袜| 精品无人区麻豆乱码1区2区图片| 日韩欧美中文字幕搭讪巨乳美人妻视频| 四虎影视欧美| 99re9| 51国产午夜精品视频| 日韩无码a片| 久久久久久精品免费看A级| 五月色网| 亚州宗合另类| 日韩ab网| 亚洲中文字幕久久无码精品| 校园春色亚洲色图| 看日韩黄片| 亚洲国产精品无码AV在线| 五月丁香社区婷婷日韩欧美精品影院 | 欧美亚洲综合色| 伊人青青一区成人视频在线观看区| 免费网站观看www在线观| 超碰97在线中文| 96超碰网| 欧美一区二区三区四区综合| 97国产高清视频在线观看| 男人的天堂啪啪啪啪啪蜜桃不卡| 人人摸人人干| wuyechaopeng| 成人国产视频在线观看| jk白丝没脱就开始啪啪| 激情五月综合网| 久久视网78| 中文子幕一二三| 97视频免费在线观看| 亚洲精品尤物yw在线影院| 狠狠干婷婷| 国产欧美日韩臀 | 97干在线| 后入式在线免费观看60秒| 欧美最婬乱婬爆婬牲视频| www国产无码| 404操逼福利视频| 亚洲……91| 97国产综合欧美| 亚洲黑人在线| 在线观看黄色电话| 岛国小电影| 天天综合网视频91| 亚洲密乳AV| 久热超碰| 欧美日本不卡| 桃花色综合影院| 丁香五月激情综合国产| 男生女生啊啊啊啊| 精品日日人妻| 国产精品嫩草影院免费| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 新婚人妻扶着粗大强行坐下| 你懂的在线观看区国产| 免费在线观看国内色片网站网址| 很黄很污的免费网站| 熟女熟妇一区二区三区视频| 男人的天堂午夜av| 中文字幕一区 二区三四五 区日 日骚| 国产天美传媒精品| 色在线视频导航| 91久热| 97se综合| 久久男人精品| 日韩人妻操B| 97伊人| 成年人一级黄色毛片大全在线观看| 熟妇最新先锋一二三区| 亚洲国产天堂| 国产一区二区啪啪视频| 欧美色图成人网一区二区| 免费在线看黄片av| 久久婷婷热| 97超碰色中文字幕| 岛国激情视频软件| 欧洲免费一区二| 日日夜夜免费| 99在线免费观看| 日本不卡一区二区三区| 久久国产性爱| 色婷婷综合久久中文字幕雪峰 | 成人aⅴ一区二区三区| 白丝1区2区3区| 97爱亚洲| 99国产人成精品| 亚洲不卡一| 秋霞影音一区二区三区| 裸体美女久久久| 13小男生GAY自慰脱裤子| 日韩欧美麻豆大片| 天操天操夜操夜月月年年操操| 金莲网址| 久久熟女久| 宅男影院久久久,99| 色天使大香蕉| 国产精品白丝在线播放| 蜜臀精品1区2区| 东京热一区二区中文字幕| 一本道综合色图| 殴美色网| www.婷婷五月天| 97超碰人操| 欧美人妻精品一区二区| 蜜臀久久精品久久久久视频| 日本东京热加勒比久久| 青青草字幕AV| 亚洲啪啪视频一区二区| 伊人国产视频| 在线A日本| 97视频新免费| 日本一级二级三级网站| 91美女视频| 97色操| 久久久久成人蜜桃精品| 国产理论视频在线播放| 国产绿奴视频在线观看| 欧美亚洲宗合色性图| 97在线精品观看视频| 久干网| 亚洲国产成人精品久久久国产成人一区二区三. | 视频不卡中文字幕| 欧美性天天影视| 中文字幕丰满子伦无码专区在线视频最新 | 激情AV| 狠狠爱大香蕉| 殴美,日韩国产伦精品| 久久久久久网址| 天堂精品小草| 久久久亚洲高清不打码| 亚洲日韩97| 日韩AC| 高清视频一区| 影音综合网| AVE乱伦| 性爱AV天堂| 蜜乳av首页| 中文字幕成人乱码熟女精品国50| 欧美少妇大量自拍视频在线观看| 自拍偷拍草一草| 欧美韩国你懂得在线 | 超碰国产精品久| 9997se| 日本三级韩国三级99| 久久久久久97| 91爱看| 日欧操屄视频| 欧美综合天天| 国产日韩人人| 超碰99热| av黄图片在线观看| 欧美综合 站| 天天天天干| 亚洲āv网址在线观看| 亚欧美综合网。| 99∨VTV| 蜜臀无码视频在线观看| 久久九操在线观看| 男人的天堂2010| 欧美十八禁视频| 日韩综合色网| 熟妇高潮一区二区免费视频| 波多野结衣一级视频| 青青草在线视频播放器| 第二页中文字幕| 国产 无码 一区二区| 国产400孕妇孕交群| 亚洲的天堂网| 六月婷婷综合| www.伪伪| 干少妇视频| 色网在线| 欧美|91色综合| AA特级绝黄| 欧美不在线| 久久久精品久久| 久热69九色熟妇97| 天天躁日日躁xxxxx| 天天综合~91| 九九综合网| 狠狠操夜夜操蜜桃视频三区| 乱伦图av| 天天草天天日| 日韩专区久久久| 麻豆视频国产一区二区| 青女偷拍网| 青青操少妇| 丁香五月影院| 色欲蜜臀AV| 久操精品| 91亚洲黄色网| AV99热18这里只有精品| 国产在线76页| 欧美性爱精品一区二区| 亚洲精品尤物yw在线影院| 蜜屁av| 狠狠爱夜夜干| 有码色中文字幕在线观看| 久久亚洲av成人无码国产| 精品国产91av一区二区三区 | 在线观看亚洲专区| 97超碰站| 亚洲Av诱惑| 伊人久久亚洲色欲综合网站 | 欧美 日韩第一性色| 天天日天天射天天干| 婷婷五月天激情小说| 福利伊人玖玖国产| 内射小黄片| 亚洲久久久久| 精品国产乱码久久久久久久久久毛片| 青青草色插素人| 天天综合AV| 狠狠干综合| 自拍偷拍2025在线观看| 久久精品国产亚洲妲己影视| 国产三级片在线观看| 97伦综合| 大香蕉伊人网WWWn0n| 长长久久88视频| 国产农村一一级特黄毛片| 天天搞在线综合网| 精品久久久av无码免费| 亚洲情欲| 人妻欧美| 青草精品视频一日本久久久久网站| 久热99999| 成熟熟女国产精品一区二区| 香一区二区三区| 欧美黑人性猛交91| 日本在线一二| 久99| 人人爱操| 九九av| 日日操天天操| 日本三级韩三级99久久| 伊人色综合网电影| 性爱精品一区| 男人a天堂手机在线版| 强奸乱伦AV网站| 中国少妇XXXX做受| 无码高清操逼网址| 国产自偷| 色婷亚洲五月在线观看| 大香蕉色欲AV| 国产久久av| 香蕉免费一区二区三区不读| 亚洲天堂 视频你懂的| 人人操,人人插| 风月影院男女十八禁| 亚洲欧洲色情高清| 欧美综合制服在线| 欧美日韩精品国产91| 六九九九| 久久大香蕉| 国产少妇肉丝在线观看| 人妻熟女午夜精品在线| 色色激情五月天| 色婷婷影视| 特污免视频| 欧洲综合视频| 大香蕉 222| 神马久久久久久久久久久久| 久久人妻97久久久久久久| julia在线观看久久| 久久天天躁日日躁狠狠躁| 精品十三区| 欧美国产一区二区三区麻豆传媒| 久久久禁| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 综合国产影视三级| 色网在线视频观看免费| 黄色免费网页无码| 国产AV久久久蜜爱影集| 这里只有精品视频| 九九久久久久久爱| 欧美成人色| 91少妇香蕉久久精品| 一摸二插三插| 春色综合网| 亚洲婷婷丁香在线| 国产特级毛片AAAAAA高潮流水 | 欧亚韩国999| 91精品网站| 伊人国产成人av网站| 欧美激情性爱视频网站| 国产91久久九九免费精品无码| 天天爽天天操| 亚洲精品一二三四区| 亚洲 另类 丝袜 自拍 动漫| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 殴美在线AⅤ| 久久人妻视频| 麻豆国产尤物AV| 久久亚州高清| 蜜桃臀一区二区三区久久| 欧洲精品一级二级精品综合视频综合 | 九月AV| 蜜桃臀AV在线| 加勒比综合网| 无码精品久久久天天影视| 国产无码一二三区| 99热99re超碰精品| 成人在线午夜视频一区| 久久99干一本高清| 插入逼91| 在线观看国产黄色| 九九精品美女高溯喷水 | 国产一区二区a毛片| 婷色五月| 青青草视频久久久久| 91亚.色| 香港澳门日本三级网站| 久久久久成人亚洲国产| 国产欧美第五页| 九九热精彩视频| 开心激情站| 成人热久久精品| 精品无码少妇| 日韩性爱毛片操骚逼| 人妻少妇久久久| 九九九久久久久| 久久啊啊| 黄色免费网页无码| 美腿色图| 亚洲男人天堂视频| 美日韩男女操屄视频| 免費黃色視頻觀看一| 日韩av女优在线免费一区| 啊灬啊灬啊灬啊灬高潮奶出了免费视| 97在线视频免费观看| 欧美日韩国内不卡| 日韩熟女精品无码专区一区二区| 我爱操| 久久国产免费激情视频| 中文啪啪视频| 97天天在线| 久热精品在线国产| 激情文学网伊人| 天天天堂影视日韩亚洲91| 日韩免费a级毛片无码a∨| a在线视频免费观看| 天天天天做夜夜夜夜做| 91国模| 美女自卫慰黄网站免费| 夜草欧美| 精品国产一区探花在线观看| 欧美综合区| 九九九影院| 小说区 图片区色 综合区| 91婷婷| 亚欧美综合网。| 亚洲男人久久综合天堂| 国产欧美美女免费观看视频| 精品丰满熟妇人妻一区| 最新av网站在线观看| 青青草原狼av| 久久人妻熟女一区二区| 国产粉嫩出水在线播放| 色偷偷色偷偷欧美日韩| JIZZJIZZ亚洲女人被躁| 久久久蜜桃一区二区三区| 怡红院网站在线视频| 日本欧美韩国国产在线| juliaann精品熟女一区| 熟妇视频一区二区三区在线| 成年女人18级毛片毛片免费观看| 亚洲欧洲第二视频在线观看色图| 日日干天天干夜夜爽| 成人贴图日韩欧美| 久久香蕉国产线看观看亚洲女人| 国产女人操逼视频| 极品久久久久久久久久久久久久| 久久国产逼| 97精品综合| 亚洲色综网| 色噜噜人妻丝袜a∨先锋影| 大香蕉综合在线| 婷婷超| 欧美亚洲玖玖玖| 97在线免费看视频| 天天做天天爽| 97碰碰色| 国产免费永久精品无码| 欧美综合亚洲| 色综合色欲色综合色综合色综合| 男女性扦B| 狠狠色狠狠色狠狠五月| 加勒比伊人综合| 嗯啊抽插大香蕉网页| 欧美一级专区免费大片| 人人操人人操人人人操| 操一区| 超97在线精品视频| 97超碰这里只有精品| 大香蕉黄色一级片免费看| 日本一天色道久久久精品视频| 免费?级毛片无码?∨蜜芽试看| 久久久穴999| 国产乱伦亚洲| 性做久久久久久久| 殴美,日韩国产伦精品| 91肉丝| 黄页大片在线观看| 天天草天天日| 久久AV无码1区2区3区| 久久亚洲欧美中文字幕国语| 自拍丝袜美腿人妻| 欧美成人A√在线一区二区| 中文在线久久字幕| 老熟妇一区二区三区…| 日韩AV一区二区三区三州三州| 国产成人拍国产亚洲精品| 欧美综合在线91| 操高情无码| 88在线一区二区三区| 日本三级韩三级99久久| 亚洲97精品| 欧美日韩国第一区| 大香蕉黄色一级片免费看| 亚洲综合性网址| 亚洲中文字母在线播放| 97伊人| 久久久久久亚洲精品中文字幕人妻| 天天干人人乐| 青青操97| 狼狼色丁香久久婷婷综合五月| 久久 久久国内精品亚洲 | 97操97色| 中文字幕一二区二三区人妻专区| 伊人午夜福利视频| 色播丁香|