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调试技巧之console.log()详解
Mar 19 Javascript
深入理解JavaScript程序中内存泄漏
Mar 17 Javascript
js 求时间差的实现代码
Apr 26 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
js捕捉键盘事件和按键键值的方法
Oct 10 Javascript
简单谈谈JS数组中的indexOf方法
Oct 13 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
前端MVVM框架解析之双向绑定
Jan 24 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
ES6中字符串的使用方法扩展
Jun 04 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 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
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
Javascript浅谈之引用类型
2013/12/18 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
js自定义input文件上传样式
2018/10/26 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
python黑魔法之编码转换
2016/01/25 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
Unix如何添加新的用户
2014/08/20 面试题
夜大毕业生自我鉴定
2013/10/31 职场文书
骨干教师培训感言
2014/01/16 职场文书
保密协议书范本
2014/04/22 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书