js查询商品项目案例详解
查询商品案例
要求:
1、把数据渲染到页面中(forEach)
2、根据价格显示数据(filter)
3、根据商品名称显示数据(some)
》》页面html结构如下
<style> table { width: 400px; border: 1px solid #000; border-collapse: collapse; margin: 0 auto; } tr, td, th { border: 1px solid #000; text-align: center; } input { width: 50px; } .search { width: 600px; margin: 20px auto; } </style> <body> <div class="search"> 按照价格查询: <input type="text" class="start"> - <input type="text" class="end"> <button class="search-price">搜索</button> 按照商品名称查询: <input type="text" class="product"> <button class="search-pro">查询</button> </div> <table> <thead> <tr> <th>id</th> <th>产品名称</th> <th>价格</th> </tr> </thead> <tbody> </tbody> </table> </body>
效果图:
》》需要被渲染上述页面的数据如下:
var data = [{ id: 1, pname: '小米', price: 3999 }, { id: 2, pname: 'oppo', price: 999 }, { id: 3, pname: '荣耀', price: 1299 }, { id: 4, pname: '华为', price: 1999 }];
》》代码实现
//1、获取相应元素 var tbody = document.querySelector('tbody'); var start = document.querySelector('.start'); var end = document.querySelector('.end'); var search_price = document.querySelector('.search-price'); var product = document.querySelector('.product'); var search_pro = document.querySelector('.search-pro'); //初始调用渲染数据函数 setDate(data); //2、定义一个函数setDate(mydata)专门用来把数据渲染到页面中,形参mydata接受传递过来的数组 // 核心:利forEach()方法遍历数组中每一个元素 function setDate(mydata) { //清空原来tbody里面的数据 tbody.innerHTML = ''; mydata.forEach(function(item) { var tr = document.createElement('tr'); //创建节点 tr.innerHTML = '<td>' + item.id + '</td><td>' + item.pname + '</td><td>' + item.price + '</td>'; tbody.appendChild(tr); }); } //3、点击查询按钮筛选符合条件的数据并调用setDate()渲染到页面中 search_price.addEventListener('click', function() { // filter()方法用来筛选数组,注意会返回一个新的数组 var newData = data.filter(function(item) { return item.price >= start.value && item.price <= end.value; }); setDate(newData); }); //4、根据商品名称显示数据 search_pro.addEventListener('click', function() { //声明一个新数组newArry用来存放满足条件的对象数据 var newArry = []; //some()方法用来检测是否存在满足指定条件的元素,注意返回必须为布尔值 data.some(function(item) { if (item.pname === product.value) { newArry.push(item); return true; } }); setDate(newArry); })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构