繁体   English   中英

Javascript:如何使用下拉列表中的remove()撤消对选项的删除?

[英]Javascript: How to undo the removal of options using remove() within a dropdownlist?

我得到两个DropDownList: Min_PriceMax_Price和javascript,如果符合条件,它们将从两个DropDownList中删除该选项。 例如:如果从DropDownList Min_Price中选择了$ 30,000 ,则将删除具有DropDownList Max_Price选项,但不删除默认值Max. Price Max. Price选项。 有没有办法撤销永久删除期权? 我犯了任何逻辑错误吗? 谢谢。

 var minPrice = document.querySelector('[name="Min_Price"]'); var maxPriceOptions = document.querySelectorAll('[name="Max_Price"] option'); var maxPrice = document.querySelector('[name="Max_Price"]'); var minPriceOptions = document.querySelectorAll('[name="Min_Price"] option'); var reg = /[\\$\\,]/g; // Remove the lower value options from Max_Price DropDownList when a selected value in Min_Price DropdownList is greater than the Max_Price minPrice.addEventListener("change", function(e){ var v = +e.target.value.replace(reg, ""); Array.from(maxPriceOptions).forEach(el=>el.value!==" " &&+el.value.replace(reg, "")<=v && el.remove()) }); // Remove the greater value options from Min_Price DropDownList when a selected value in Max_Price DropdownList is lower than the Max_Price maxPrice.addEventListener("change", function(elems){ var vr = +elems.target.value.replace(reg, ""); Array.from(minPriceOptions).forEach(ele=>ele.value!==" " && +ele.value.replace(reg, "")>=vr && ele.remove()) }); 
 <select name="Min_Price"> <option value=" ">Min. Price</option> <option value="0">$ 0</option> <option value="10000">$ 10,000</option> <option value="20000">$ 20,000</option> <option value="30000">$ 30,000</option> <option value="40000">$ 40,000</option> <option value="50000">$ 50,000</option> </select> <select name="Max_Price"> <option value=" ">Max. Price</option> <option value="10000">$ 10,000</option> <option value="20000">$ 20,000</option> <option value="30000">$ 30,000</option> <option value="40000">$ 40,000</option> <option value="50000">$ 50,000</option> </select> 

对选项元素使用hidden属性,而不是将其删除!

 var minPrice = document.querySelector('[name="Min_Price"]'); var maxPriceOptions = document.querySelectorAll('[name="Max_Price"] option'); var maxPrice = document.querySelector('[name="Max_Price"]'); var minPriceOptions = document.querySelectorAll('[name="Min_Price"] option'); var reg = /[\\$\\,]/g; // Remove the lower value options from Max_Price DropDownList when a selected value in Min_Price DropdownList is greater than the Max_Price minPrice.addEventListener("change", function(e){ var v = +e.target.value.replace(reg, ""); Array.from(maxPriceOptions).forEach(el=> { el.value!==" " && el.value.replace(reg, "")<=v ? el.hidden = true : el.hidden = false;} ) }); // Remove the greater value options from Min_Price DropDownList when a selected value in Max_Price DropdownList is lower than the Max_Price maxPrice.addEventListener("change", function(elems){ var v = +elems.target.value.replace(reg, ""); Array.from(minPriceOptions).forEach(el=> { el.value!==" " && el.value.replace(reg, "")>=v ? el.hidden = true : el.hidden = false;} ) }); 
 <select name="Min_Price"> <option value=" ">Min. Price</option> <option value="0">$ 0</option> <option value="10000">$ 10,000</option> <option value="20000">$ 20,000</option> <option value="30000">$ 30,000</option> <option value="40000">$ 40,000</option> <option value="50000">$ 50,000</option> </select> <select name="Max_Price"> <option value=" ">Max. Price</option> <option value="10000">$ 10,000</option> <option value="20000">$ 20,000</option> <option value="30000">$ 30,000</option> <option value="40000">$ 40,000</option> <option value="50000">$ 50,000</option> </select> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM