<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <select name="" id=""> <option value="0">请选择销量范围</option> <option value="1"><100</option> <option value="2">100~500</option> <option value="3">>500</option> </select> <ul> <li>牛客logo马克杯</li> <li>无盖星空杯</li> <li>老式茶杯</li> <li>欧式印花杯</li> </ul> <script> var cups = [ { type: 1, price: 100, color: 'black', sales: 60, name: '牛客logo马克杯' }, { type: 2, price: 40, color: 'blue', sales: 100, name: '无盖星空杯' }, { type: 4, price: 60, color: 'green', sales: 200, name: '老式茶杯' }, { type: 3, price: 50, color: 'green', sales: 600, name: '欧式印花杯' } ] var select = document.querySelector('select'); var ul = document.querySelector('ul'); // 补全代码 /* 1.使用onchange绑定select事件 2.然后每次点击后清空ul,并执行case switch 3.三个条件每个条件都执行特定的filter回调函数 4.过滤完后赋值给一个newArr 5.然后重新渲染newArr就行了 */ // 渲染列表 function render(obj){ obj.forEach(item =>{ var li = document.createElement("li") li.innerHTML = `${item.name}` ul.appendChild(li) }) } select.onchange = function(){ // 清空ul 可以直接用赋空值的方法 ul.innerHTML = "" switch(this.value){ case "0": var newArr = cups break case "1": var newArr = cups.filter(item => item.sales < 100) break case "2": var newArr = cups.filter(item => 100 <= item.sales && item.sales <= 500) break case "3": var newArr = cups.filter(item => item.sales > 500) break } render(newArr) } </script> </body> </html>