当前位置:网站首页>ES6高级-查询商品案例
ES6高级-查询商品案例
2022-07-26 15:25:00 【setTimeout()】
首先来看布局:
查询商品案例需要实现的功能:
1.把数据渲染到页面中
2.根据价格显示数据
3.根据商品名称显示数据
功能一:动态渲染数据到页面
// 获取tbody
var tb = document.querySelector('tbody');
// 把数据渲染到页面中
datas(data)
function datas(data) {
// 清空tbody里面的内容
tb.innerHTML = '';
data.forEach(function(value) {
// 创建一个行
var tr = document.createElement('tr');
// 创建三个列
tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>';
// 把这个行追加到tbody里面
tb.appendChild(tr);
})
}功能二:根据价格查询商品
// 根据价格查询商品
// 当我们点击了按钮,就可以根据我们的商品价格去筛选里面的对象
// 获取元素
var star = document.querySelector('.start');
var end = document.querySelector('.end');
var searchbtn = document.querySelector('.search-price');
searchbtn.addEventListener('click', function() {
var starval = star.value;
var endval = end.value;
console.log(starval);
console.log(endval);
var newdata = data.filter(function(value) {
return value.price >= starval && value.price <= endval
})
// 把新的数据渲染到页面
datas(newdata)
})功能三:根据商品名称查询商品
// 根据商品名称显示数据
// 如果查询数据中唯一的元素,用some方法合适,因为她找到这个元素就不再进行循环,效率更高
// 获取元素
var pro = document.querySelector('.product');
var probtn = document.querySelector('.search-pro');
probtn.addEventListener('click', function() {
var arr = [];
data.some(function(value) {
if (value.pname === pro.value) {
// datas(value)
arr.push(value);
return true; //必须写true
}
})
// 渲染到页面
datas(arr)
})完整代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
table {
width: 400px;
border: 1px solid #000;
border-collapse: collapse;
margin: 0 auto;
}
td,
th {
border: 1px solid #000;
text-align: center;
}
input {
width: 50px;
}
.search {
width: 600px;
margin: 20px auto;
}
</style>
</head>
<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>
<script>
// 利用新增数组方法操作数据
var data = [{
id: 1,
pname: '小米',
price: 3999
}, {
id: 2,
pname: 'oppo',
price: 999
}, {
id: 3,
pname: '荣耀',
price: 1299
}, {
id: 4,
pname: '华为',
price: 1999
}, ]
// 获取tbody
var tb = document.querySelector('tbody');
// 把数据渲染到页面中
datas(data)
function datas(data) {
// 清空tbody里面的内容
tb.innerHTML = '';
data.forEach(function(value) {
// 创建一个行
var tr = document.createElement('tr');
// 创建三个列
tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>';
// 把这个行追加到tbody里面
tb.appendChild(tr);
})
}
// 根据价格查询商品
// 当我们点击了按钮,就可以根据我们的商品价格去筛选里面的对象
// 获取元素
var star = document.querySelector('.start');
var end = document.querySelector('.end');
var searchbtn = document.querySelector('.search-price');
searchbtn.addEventListener('click', function() {
var starval = star.value;
var endval = end.value;
console.log(starval);
console.log(endval);
var newdata = data.filter(function(value) {
return value.price >= starval && value.price <= endval
})
// 把新的数据渲染到页面
datas(newdata)
})
// 根据商品名称显示数据
// 如果查询数据中唯一的元素,用some方法合适,因为她找到这个元素就不再进行循环,效率更高
// 获取元素
var pro = document.querySelector('.product');
var probtn = document.querySelector('.search-pro');
probtn.addEventListener('click', function() {
var arr = [];
data.some(function(value) {
if (value.pname === pro.value) {
// datas(value)
arr.push(value);
return true; //必须写true
}
})
// 渲染到页面
datas(arr)
})
</script>
</body>
</html>边栏推荐
- 81.(cesium之家)cesium修改灰色背景(默认蓝色)
- 北京的大学排名
- C # set different text watermarks for each page of word
- 【静态代码质量分析工具】上海道宁为您带来SonarSource/SonarQube下载、试用、教程
- HTB-Apocalyst
- 使用两个栈实现一个队列
- 【5分钟Paper】Pointer Network指针网络
- 采购实用技巧,5个瓶颈物料的采购方法
- R语言检验相关性系数的显著性:使用cor.test函数计算相关性系数的值和置信区间及其统计显著性(如果变量来自正态分布总体使用皮尔森方法pearson)
- QCF for deep packet inspection paper summary
猜你喜欢

采购实用技巧,5个瓶颈物料的采购方法

If you want to be good at work, you must first use its tools -c language expansion -- embedded C language (11)

Tool skill learning (II): pre skills shell
原来卡布奇诺信息安全协会是干这个的呀,一起来看看吧。
![[leetcode daily question] - 268. Missing numbers](/img/96/dcf18522257dea7cb7e52f5bb7ced3.png)
[leetcode daily question] - 268. Missing numbers

Digital warehouse: iqiyi digital warehouse platform construction practice

阿里巴巴一面 :十道经典面试题解析

全志A40i工业核心板,100%国产4核ARM Cortex-A7,支持“双屏异显”【显示接口能力,工业HMI首选方案】

信用卡数字识别(opencv,代码分析)

In the changing era of equipment manufacturing industry, how can SCM supply chain management system enable equipment manufacturing enterprises to transform and upgrade
随机推荐
How much help does solid state disk have for game operation
反射、枚举以及lambda表达式
采购实用技巧,5个瓶颈物料的采购方法
软测(七)性能测试(1)简要介绍
If you want to be good at work, you must first use its tools -c language expansion -- embedded C language (11)
Can't you see the withdrawal? Three steps to prevent withdrawal on wechat.
企业数字化转型需要深入研究,不能为了转型而转型
拒绝噪声,耳机小白的入门之旅
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
LeetCode_ Prefix and_ Hash table_ Medium_ 525. Continuous array
Tool skill learning (I): pre skills -makfile, make,.Mk
VP视频结构化框架
Vs add settings for author information and time information
数商云:引领化工业态数字升级,看摩贝如何快速打通全场景互融互通
QCF for deep packet inspection paper summary
[five minute paper] reinforcement learning based on parameterized action space
Glyphs V3 Font Icon query
Digital warehouse: iqiyi digital warehouse platform construction practice
USB转串口参数配置功能
What is a virtual camera