位置: IT常识 - 正文

【JavaScript 进阶教程】汽车商城根据价格区间筛选车辆案例(javascriptj)

编辑:rootadmin
【JavaScript 进阶教程】汽车商城根据价格区间筛选车辆案例

推荐整理分享【JavaScript 进阶教程】汽车商城根据价格区间筛选车辆案例(javascriptj),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascriptj,javascript 教程,javascript进阶书籍,js进阶视频教程,js进阶视频教程,javascriptj,javascript进阶教程,javascript进阶书籍,内容如对您有帮助,希望把文章链接给更多的朋友!

本案例源码链接(非VIP可私聊获取):https://download.csdn.net/download/weixin_52212950/86286910https://download.csdn.net/download/weixin_52212950/86286910

文章导读:  

         这篇文章实现一个小案例:在购物平台选商品时我们经常会输价格区间,然后筛选出在这个区间内的商品,其实有JavaScript基础我们就已经能实现了,利用循环判断等知识。但是这篇文章是新方法 forEach,filter,some 的使用实现,可以让我们的实现更轻松。

文章目录:

一:效果展示

 二:功能实现分析

2.1 页面渲染数据

2.2 根据价格区间查找

2.3 根据输入结果准确查找

 三:完整代码

一:效果展示

页面基本效果

【JavaScript 进阶教程】汽车商城根据价格区间筛选车辆案例(javascriptj)

 根据价格区间搜索

 根据车辆名称搜索

 二:功能实现分析2.1 页面渲染数据

我们的数据存放格式为数组放对象,在写入大量数据后要将其渲染到页面的主表格中,我们可以使用 forEach 方法来实现,每次迭代都会执行一次基础的创建行,添加行的操作

实现过程:

遍历开始,首先轮到的是数组第一个元素,即第一个车辆的数据,然后创建行tr,给行tr添加内容,内容中直接将车辆信息的编号id,名称name,价格price写入,然后再在tbody内加上创建好的行再轮到下一个车辆的数据,在创建行等操作,直到所有车辆信息全部添加进去结束car.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td>'+value.id+'</td><td>'+value.name+'</td><td>'+value.price+'</td>' tbody.appendChild(tr) })2.2 根据价格区间查找

既然是筛选数据,那自然是选择我们的 filter 方法了,为了不让表格数据每次搜索完后上一次的数据还保留,所以每次点击后先清空右侧表格内的数据再去执行筛选。filter 返回的是一个新数组,所以需要一个新定义的数组去接收。筛选过后再使用 forEach 将新数组渲染到右侧的搜错结果表格即可

select1.addEventListener('click',function(){ rtbody.innerHTML='' var newcar=car.filter(function(value,index,arr){ return value.price>=start.value&&value.price<=end.value; }) // console.log(newcar); newcar.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td class="righttd">'+value.name+' :'+value.price+'万'+'</rd>' rtbody.appendChild(tr) }) })2.3 根据输入结果准确查找

在大批数据中要准确查找某个信息时,使用 some 方法比较合适,因为 some 一旦查找到就会停止遍历,数据量大时可以节省效率,很明显我们这个功能也要让其返回一个符合条件的新数组,但是some返回的结果是一个布尔值,所以此处我们需要自定义数组,然后去用 push 方法将复合查找要求的数据添加到新数组里,并且一旦查找到就让其 返回 ture 终止循环遍历

select2.addEventListener('click',function(){ rtbody.innerHTML='' newarr=[] car.some(function(value,index,arr){ if(value.name==name1.value){ newarr.push(value) return true; } }) newarr.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td class="righttd">'+value.name+' :'+value.price+'万'+'</rd>' rtbody.appendChild(tr) }) }) 三:完整代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin: 0; padding: 0; } .outbox{ position: absolute; width: 1200px; left: 50%; top: 50%; transform: translate(-50%,-50%); border-top: 1px solid black; border-left: 1px solid black; border-right: 2.2px solid black; border-bottom: 2.2px solid black; } .leftbox{ float: left; width: 900px; /* height: 600px; */ box-sizing: border-box; border-top: 1.4px solid black; border-left: 1.4px solid black; border-right: 5px solid black; } .rightbox{ float: left; width: 298px; border-top: 1.5px solid black; } .top{ position: relative; width: 898px; height: 120px; border-bottom: 1.4px solid black; background-color: rgb(219, 219, 219); box-sizing: border-box; } .bottom{ padding-top: 28px; width: 898px; padding-bottom: 28px; background-color: rgb(244, 244, 244); } table{ margin: 0 auto; width: 835px; border: 1.4px solid black; } thead tr{ width: 835px; height: 40px; border: 1.4px solid black; background-color: rgb(208, 241, 255); } tbody tr{ width: 835px; height: 50px; border: 1.4px solid black; background-color: rgb(255, 239, 239); } td{ width: 278px; border: 1.4px solid black; text-align: center; font-weight: bold; font-size: 17px; letter-spacing: 3px; } .price{ position: absolute; top: 22px; left: 37px; letter-spacing: 2px; font-size: 18px; font-weight: 500; } .start,.end{ padding-left: 6px; width: 100px; height: 30px; outline: none; font-size: 20px; } .pricebox{ position: absolute; top: 19px; left: 325px; letter-spacing: 2px; font-size: 18px; font-weight: 800; } .select1{ position: absolute; width: 170px; height: 37px; top: 17px; right: 115px; font-size: 14.5px; letter-spacing: 2px; background-color: rgb(255, 226, 154); border: 1px solid black; } .name-p{ position: absolute; bottom: 22px; left: 94px; letter-spacing: 2px; font-size: 18px; font-weight: 500; } .name{ position: absolute; bottom: 16px; left: 325px; letter-spacing: 2px; font-size: 18px; width: 235px; height: 30px; outline: none; padding-left: 6px; } .select2{ position: absolute; width: 170px; height: 37px; bottom: 15px; right: 115px; font-size: 14.5px; letter-spacing: 2px; background-color: rgb(255, 226, 154); border: 1px solid black; } .select1:hover{ background-color: rgb(255, 210, 95); } .select2:hover{ background-color: rgb(255, 214, 110); } .rtable{ margin: 0 auto; width: 240px; margin-top: 40px; margin-bottom: 40px; } .rthead .rtr{ width: 240px; height: 40px; border: 1.4px solid black; background-color: rgb(208, 241, 255); } .rtbody .rtr{ width: 240px; height: 40px; border: 1.4px solid black; background-color: rgb(255, 201, 114); } .rtd{ width: 240px; border: 1.4px solid black; text-align: center; font-weight: bold; font-size: 17px; letter-spacing: 3px; } .righttd{ width: 240px; border: 1.4px solid black; text-align: center; font-weight: bold; font-size: 17px; letter-spacing: 3px; background-color: rgb(255, 234, 206); } .clear{ width: 85px; height: 85px; position: absolute; top: 16px; right: 13px; border: 1px solid black; font-weight: 400; font-size: 15px; background-color: #fff; } .clear:hover{ background-color: rgb(247, 247, 247); } </style></head><body> <div class="outbox"> <div class="leftbox"> <div class="top"> <button class="clear">清空查询</button> <p class="price">您要查询的价格区间为(万元):</p> <div class="pricebox"> <input type="text" class="start"> ~ <input type="text" class="end"> </div> <input type="button" class="select1" value="从价格区间查询"> <p class="name-p">您要查询的车辆名称为:</p> <input type="text" class="name"> <input type="button" class="select2" value="从车辆名称查询"> </div> <div class="bottom"> <table cellspacing="0" style="border-collapse: collapse;"> <thead> <tr> <td>汽车编号</td> <td>汽车名称</td> <td>汽车售价(万元)</td> </tr> </thead> <tbody> </tbody> </table> </div> </div> <div class="rightbox"> <table cellspacing="0" style="border-collapse: collapse;" class="rtable"> <thead class="rthead"> <tr class="rtr"> <td class="rtd">查询结果</td> </tr> </thead> <tbody class="rtbody"> </tbody> </table> </div> </div> <script> var car=[ { 'id':1000001, 'name':'奥迪A6 Avent', 'price':46 }, { 'id':1000002, 'name':'奥迪A6 allroad', 'price':52 }, { 'id':1000003, 'name':'奥迪RS6', 'price':145 },{ 'id':1000004, 'name':'奥迪RS7', 'price':154 }, { 'id':1000005, 'name':'奥迪A7L', 'price':82 }, { 'id':1000006, 'name':'GTR R32', 'price':140 }, { 'id':1000007, 'name':'GTR R33', 'price':101 }, { 'id':1000008, 'name':'GTR R34', 'price':180 }, { 'id':1000009, 'name':'GTR R35', 'price':160 } ] var tbody=document.querySelector('tbody'); var rtbody=document.querySelector('.rtbody'); var start=document.querySelector('.start'); var end=document.querySelector('.end'); var select1=document.querySelector('.select1'); var clear=document.querySelector('.clear'); var select2=document.querySelector('.select2'); var name1=document.querySelector('.name'); clear.addEventListener('click',function(){ window.location.reload() }) car.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td>'+value.id+'</td><td>'+value.name+'</td><td>'+value.price+'</td>' tbody.appendChild(tr) }) select1.addEventListener('click',function(){ rtbody.innerHTML='' var newcar=car.filter(function(value,index,arr){ return value.price>=start.value&&value.price<=end.value; }) // console.log(newcar); newcar.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td class="righttd">'+value.name+' :'+value.price+'万'+'</rd>' rtbody.appendChild(tr) }) }) select2.addEventListener('click',function(){ rtbody.innerHTML='' newarr=[] car.some(function(value,index,arr){ if(value.name==name1.value){ newarr.push(value) return true; } }) newarr.forEach(function(value,index,arr){ var tr=document.createElement('tr'); tr.innerHTML='<td class="righttd">'+value.name+' :'+value.price+'万'+'</rd>' rtbody.appendChild(tr) }) }) </script></body></html>
本文链接地址:https://www.jiuchutong.com/zhishi/300604.html 转载请保留说明!

上一篇:Python---time模块(pythontime模块)

下一篇:MySQL常见的高可用架构(mysqlmha高可用)

  • 微博如何设置不让别人看我的主页(微博如何设置不可转发)

    微博如何设置不让别人看我的主页(微博如何设置不可转发)

  • 钉钉外勤打卡怎么打呢(钉钉外勤打卡怎么取消)

    钉钉外勤打卡怎么打呢(钉钉外勤打卡怎么取消)

  • 苹果怎么清除通讯录所有电话(苹果怎么清除通知)

    苹果怎么清除通讯录所有电话(苹果怎么清除通知)

  • 拼多多一星评价后果(拼多多一星评价会扣钱吗)

    拼多多一星评价后果(拼多多一星评价会扣钱吗)

  • 华为nova4可以当遥控器吗(华为nova4可以装支持电信卡吗?)

    华为nova4可以当遥控器吗(华为nova4可以装支持电信卡吗?)

  • ca用户是什么意思(ca登录和用户登录区别)

    ca用户是什么意思(ca登录和用户登录区别)

  • 苹果8p充电充到80不动(苹果8p充电充到60充不动了)

    苹果8p充电充到80不动(苹果8p充电充到60充不动了)

  • 华为浏览器图标不见了(隐藏华为浏览器图标)

    华为浏览器图标不见了(隐藏华为浏览器图标)

  • 换了新路由器为什么连上不能用(换了新路由器为什么卡顿)

    换了新路由器为什么连上不能用(换了新路由器为什么卡顿)

  • 微信语音电话连接失败是什么意思(微信语音电话连接失败的显示是怎样的)

    微信语音电话连接失败是什么意思(微信语音电话连接失败的显示是怎样的)

  • 识别二维码无法打开网页怎么办(识别二维码无法跳转怎么回事)

    识别二维码无法打开网页怎么办(识别二维码无法跳转怎么回事)

  • 华为手机怎么设置拼多多分身(华为手机怎么设置锁屏密码)

    华为手机怎么设置拼多多分身(华为手机怎么设置锁屏密码)

  • 大数据分为哪三类(数据分为哪三类类型)

    大数据分为哪三类(数据分为哪三类类型)

  • vivo充电插头是带闪充的吗(vivo充电插头图片)

    vivo充电插头是带闪充的吗(vivo充电插头图片)

  • nova6颜色有哪些(nova6的颜色有哪些)

    nova6颜色有哪些(nova6的颜色有哪些)

  • 英特尔处理器后面的字母代表什么意思(英特尔处理器后缀p)

    英特尔处理器后面的字母代表什么意思(英特尔处理器后缀p)

  • 苹果x无线网信号不好怎么回事(苹果x无线网信号接收很弱)

    苹果x无线网信号不好怎么回事(苹果x无线网信号接收很弱)

  • wps删除多余空白行(Wps删除多余空白行列)

    wps删除多余空白行(Wps删除多余空白行列)

  • 怎么看有几个人特别关心我(b站怎么看有几个人)

    怎么看有几个人特别关心我(b站怎么看有几个人)

  • 微信文件过期怎么恢复(微信文件过期怎么打开)

    微信文件过期怎么恢复(微信文件过期怎么打开)

  • 手机上怎么隐藏无线网(手机上怎么隐藏微信图标)

    手机上怎么隐藏无线网(手机上怎么隐藏微信图标)

  • mate20支持无线充电吗(mate20支持无线充电么)

    mate20支持无线充电吗(mate20支持无线充电么)

  • 华为手机怎么激活电子保卡(华为手机怎么激活设备密码忘了)

    华为手机怎么激活电子保卡(华为手机怎么激活设备密码忘了)

  • emlaloo是什么型号(em la l 00)

    emlaloo是什么型号(em la l 00)

  • 内存卡插电脑上不显示(内存卡插电脑上提示格式化是什么意思)

    内存卡插电脑上不显示(内存卡插电脑上提示格式化是什么意思)

  • 贝希特斯加登阿尔卑斯山脉全景,德国巴伐利亚州 (© Spotcatch/Westend61/Offset)(贝特阿斯品牌介绍)

    贝希特斯加登阿尔卑斯山脉全景,德国巴伐利亚州 (© Spotcatch/Westend61/Offset)(贝特阿斯品牌介绍)

  • 未开票收入缴纳增值税怎么冲减补开发票
  • 交易性金融资产和其他权益工具投资的区别
  • 电子税务局财务负责人实名认证
  • 汇算清缴退税可以不退吗
  • 从业人数和资产的关系
  • 企业所得税弥补亏损怎么算
  • 没进项发票要交多少税
  • 固定资产增值税怎么抵扣
  • 对公账户钱怎么退回去
  • 银行汇款风险提示
  • 投资决策中常用的指标有
  • 公司对外投资的规定
  • 单独出售的包装物是否属于包装物的核算范围
  • 注册资本认缴与注册登记实操
  • 更换营业执照要多久才能拿到
  • win10专业版虚拟内存怎么设置
  • 取得土地所有权范围内的树如何处理
  • linux用途是什么
  • 增值税普通发票怎么开
  • win7系统禁用u盘
  • php dom
  • android上传图片到服务器
  • 学生兼职收入按什么交个税
  • 企业收取租金的未开具发票的怎么计算税款
  • 固定资产折旧提完后只剩净残值
  • 纳税申报表填写说明
  • php uniqueid
  • this.emit('input')
  • 机器学习篇-指标:AUC
  • egi脑电数据处理
  • node.js deno
  • chatGPT之Python API启用上下文管理
  • 命令行激活profile命令的格式
  • 支付给外单位人员的报酬怎么入账
  • 长期借款利息是流动负债吗
  • mongodb设置远程连接
  • 领取材料的分录
  • 应收账款收不回来做坏账处理分录
  • 查询不到shsh怎么回事
  • 企业转钱给个人
  • mysql的性能优化方案有哪些
  • 财产租赁合同印花税双方都要交吗
  • 固定资产已提完折旧,但仍在使用,需要定期清理吗?
  • 增值税税控系列是什么
  • 发票抵扣联认证完还有用吗
  • 员工外面有自己的公司
  • 加工费的进项发票摘要写什么
  • 增值税明细账怎么结账
  • 三年期定期存款利率怎么算
  • 本期预付的费用属于本期费用吗
  • 增值税可以退吗
  • 资产负债表中应交税费为负数是什么意思
  • 招标付款条件及比例
  • 递延收益为什么属于负债
  • 容器内存限制
  • 做ghost备份
  • 电脑系统怎么设置字体大小
  • windows8怎么设置
  • 计算机 win10 桌面
  • 密码多次错误被锁定怎么办
  • win8 网络连接
  • 如何设置win10用户名
  • win8打开蓝牙设置
  • windows8如何进入bios
  • cocos2dx4.0教程
  • 在动画制作中一般默认帧数选择为
  • js复制数组的方法
  • 电脑安装node
  • js中排序的函数
  • js原型作用
  • unity获取物体位置代码
  • opencv识别结果输出
  • 安徽税务网上申报领取发票
  • 百望税控盘电子发票怎么打
  • 职称申报结束多久公示
  • 河北电子税务局电话
  • 青海省地方税务局领导名单
  • 发票 报销流程
  • 申报农业项目的程序是什么?
  • 用于直接销售消费品的消费税计入
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设