js实现简单商品查询

html代码(进行简单布局)

<div class="box">
	<!--设置按价格查询输入框-->
	<label for="jg">价格查询:</label><input type="text" id="jg" class="num1"/><span>-</span><input type="text" id="jg" class="num2"/><button class="btn1">搜索</button>
	<!--设置按商品名查询输入框-->
	<label for="sp">按照商品名查询:</label><input type="text" id="sp" class="product"/><button class="btn2">搜索</button>
	<!--设置表格用来显示数据-->
	<table cellspacing="0">
		<thead>
			<tr>
				<th>id</th><th>产品名称</th><th>价格</th>
			</tr>
		</thead>
		<tbody>
				
		</tbody>
	</table>
</div>

css代码

.box{
	text-align: center;
	margin: 20px auto;
}
table{
	margin: 10px auto;	
}
tr{
	width: 100px;
}
th,td{
	width: 250px;
	border: 1px solid #ccc;
	line-height: 40px;
}

js代码

let num1 = document.querySelector(".num1");
let num2 = document.querySelector(".num2");
let btn1 = document.querySelector(".btn1");
let product = document.querySelector(".product");
let btn2 = document.querySelector(".btn2");
let tbody = document.querySelector("tbody");
/*设置初始数据*/
let data = [
	{
		id:1,
		name:"iphone12",
		price:"6299"
	},
	{
		id:2,
		name:"iphoneX",
		price:"4399"
	},
	{
		id:3,
		name:"iphone7",
		price:"2000"
	},
];
setData(data);/*设置初始值*/
function setData(data){
	/*先将tbody的值清空在赋值*/
	tbody.innerHTML="";	
	/*forEach遍历数组*/
	data.forEach(function(value,index,array){
		/*添加一个tr节点*/
		let tr = document.createElement("tr");
		tr.innerHTML = "<td>"+value.id+"</td>"+"<td>"+value.name+"</td>"+"<td>"+value.price+"</td>";
		tbody.appendChild(tr);/*将tr添加到tbody里*/
	})			
}
/*按价格查询,这里使用了箭头函数,也可以写成  btn1.onclick = function(){}*/
btn1.onclick = () =>{
	/*使用filter返回符合条件的值,并作为一个新数组*/
	let newData = data.filter(function(value){
		/*对输入内容进行判断,选择返回的值*/
		if(num1.value==""&&num2.value==""){
			return value;
		}else if(num1.value==""&&num2.value!=""){
			return value.price<=num2.value;
		}else if(num1.value!=""&&num2.value==""){
			return value.price>=num1.value;
		}else if(num1.value!=""&&num2.value!=""){
			return value.price<=num2.value&&value.price>=num1.value;
		}
					
	});
	setData(newData);/*将新数组的值遍历再添加到tbody中*/
}
/*按商品名称查询*/
btn2.onclick = () =>{
	let newData = data.filter(function(value){
		if(product.value == ""){
			return value;
		}else{
			return value.name == product.value;	
		}					
	});
	setData(newData);
}

效果图

默认效果(当输入内容为空时也显示全部)
在这里插入图片描述
按价格查询
在这里插入图片描述
按商品名查询
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值