js实现查询商品案例


Posted in Javascript onJuly 22, 2020

本文实例为大家分享了js实现查询商品的具体代码,供大家参考,具体内容如下

<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-prro">查询</button>
 </div>
 <table>
  <thead>
   <tr>
    <th>id</th>
    <th>产品名称</th>
    <th>价格</th>
   </tr>
  </thead>
  <tbody>
   <!-- <tr>
    <td>1</td>
    <td>小米</td>
    <td>2000</td>
   </tr>
   <tr>
    <td>2</td>
    <td>oppo</td>
    <td>999</td>
   </tr>
   <tr>
    <td>3</td>
    <td>荣耀</td>
    <td>1299</td>
   </tr>
   <tr>
    <td>4</td>
    <td>华为</td>
    <td>1999</td>
   </tr> -->
  </tbody>
</table>

 css:

*{
   margin: 0;
   padding: 0;
  }
  body{
   width: 1000px;
   margin: 0 auto;
  }
  .search{
   text-align: center;
   /* margin: 0 auto; */
  }
  table{
   padding-top: 20px;
   width: 1000px;
   height: 100px;
   /* border: 1px solid #ccc; */
   margin:0 auto ; 
   
  }
  th,tr,td{
   border: 1px solid #ccc;
   text-align: center;
   height: 50px;
 }

js:

<script>
  //利用数组的方式对数据进行存储
  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');
  //2.把数据渲染到页面中
  //forEach()。属于数组中的方法,第一个参数表示为每个元素,第二个参数为每个元素的索引值,第三个参数为整体元素的表达式
  

  //为了方便使用渲染函数,需要先调用一次,将商品渲染
  setDate(data);


  //应为筛选后也要进行渲染,此时可以将此步设置为封装函数
  function setDate(mydata){

   //重新渲染数据的时候,先清空tbody原来的数据
   tbody.innerHTML = '';


   mydata.forEach(function(value){
   //测试
   // console.log(value);

   //将每个对象放进tbody中去,需要先给tbody创建行 tr
   var tr = document.createElement('tr'); 
   //已知每个对想的属性名为value,因此可以利用获取对象中值的方式进行赋值 例如:value.id
   tr.innerHTML = '<td>'+value.id +'</td> <td>'+value.pname +'</td> <td>'+value.price +'</td>';
   tbody.appendChild(tr); 
   });
  }


  //3.利用判断查询商品信息
  //filter()方法可以用到判断的效果
  //首先获取相应的元素信息
  var search_price = document.querySelector('.search-price'); 
  var start = document.querySelector('.start');
  var end = document.querySelector('.end');

  search_price.addEventListener('click',function(){
   // alert(1) //测试
   //定义一个变量名进行数据接受
   var newDate = data.filter(function(value){
    // console.log(value);
    //返回值: 起始价 <= 价格 <= 最终价
    return value.price >= start.value && value.price <= end.value; 
   });
  // 打印变量名
  // console.log(newDate);//测试
  //将筛选完之后的对象渲染到页面中去
  //调用渲染函数
   setDate(newDate);
  })
  

  //4.通过商品名称查询,此处的查询可以利用filter()方法进行书写,也可以利用以下方式书写查找
  //通过some进行查询,因为some方法查到后直接退出,比较有效率,同时some返回的值为布尔值
  //首先获取相关元素
  var product = document.querySelector('.product');//输入
  var search_pro = document.querySelector('.search-prro'); //查询

  search_pro.addEventListener('click',function(){
   //创建一个新的数组用来获取
   var arr = [];
   data.some(function(value){
    if(value.pname === product.value){
     // console.log(value); //测试
     arr.push(value);//只要是满足条件,就将获取到的元素添加到新数组中去
     return true; //return 必须为true
    }
   });
   // 在此调用渲染函数
   setDate(arr); //此时的 value.price 中的value形参传递的是arr实参对象
  })

</script>

实现效果:

js实现查询商品案例

为什么最后需要利用some进行查询:

js实现查询商品案例

js实现查询商品案例

因为利用数组的some方法,查询遍历,只要返回值结果为true便可结束程序,不需要浪费太多的事件,大大加强了办事效率

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现的距离现在多长时间后的一个格式化的日期
Oct 29 Javascript
FileUpload上传图片(图片不变形)
Aug 05 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
Jan 23 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
Nov 10 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
Feb 26 Javascript
php常见的页面跳转方法汇总
Apr 15 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
详解React-Todos入门例子
Nov 08 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
vue项目中使用bpmn-自定义platter的示例代码
May 11 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 #Javascript
eslint+prettier统一代码风格的实现方法
Jul 22 #Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 22 #Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 #Javascript
浅谈JS for循环中使用break和continue的区别
Jul 21 #Javascript
解决vue 给window添加和移除resize事件遇到的坑
Jul 21 #Javascript
js实现带积分弹球小游戏
Jul 21 #Javascript
You might like
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
php以post形式发送xml的方法
2014/11/04 PHP
php猜单词游戏
2015/09/29 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
基于Jquery实现万圣节快乐特效
2015/11/01 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Pytorch Tensor的统计属性实例讲解
2019/12/30 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
实习教师个人的自我评价
2013/11/08 职场文书
九年级政治教学反思
2014/02/06 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
Java 在生活中的 10 大应用
2021/11/02 Java/Android