ES6 - Day2实例 - 商品查询案例

4. ES6实例 - 商品查询案例

4.1 查询商品

自己写的:

// 利用新增数组方法操作数据
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');
var startInput = document.querySelector('.start');
var endInput = document.querySelector('.end');
var searchBtn = document.querySelector('.search-price');

//创建表格
function addTab(value){
    var tr = document.createElement('tr');
    tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>'
    tbody.appendChild(tr);
}

// 2. 把数据渲染到页面中
data.forEach(function(value){
    addTab(value);
});

// 3. 根据价格查询商品
searchBtn.onclick = function(){
    //先清空原来tbody的内容
    tbody.innerHTML = '';
    data.filter(function(value){
        if(value.price <= endInput.value && value.price >= startInput.value){
            addTab(value);
        }
    })
}

教程写的:

// 1. 获取相应的元素
var tbody = document.querySelector('tbody');
var startInput = document.querySelector('.start');
var endInput = document.querySelector('.end');
var searchBtn = document.querySelector('.search-price');

setData(data);

// 2. 把数据渲染到页面中
function setData(mydata){
    //先清空原来tbody的内容
    tbody.innerHTML = '';
    mydata.forEach(function(value){
        var tr = document.createElement('tr');
        tr.innerHTML = '<td>' + value.id + '</td><td>' + value.pname + '</td><td>' + value.price + '</td>'
        tbody.appendChild(tr);
    });
}

// 3. 根据价格查询商品
searchBtn.addEventListener('click', function(){
    var newData = data.filter(function(value){
        return value.price <= endInput.value && value.price >= startInput.value;
    });
    // 筛选完后将内容渲染到页面中
    setData(newData);
})

// 4. 按商品名称查询商品
proBtn.addEventListener('click', function(){
    var arr = [];
    data.some(function(value){
        // 当return返回true以后就不在进行查找了
        // some适用于查找唯一元素
        if(value.pname === productInput.value){
            arr.push(value);
            return true;    // return 后面必须写 true
        }
    });
    // 筛选完后将内容渲染到页面中
    setData(arr);

    //当要查找的元素不唯一时,适合使用 filter 进行查找
    // var proData = data.filter(function(value){
    //     return value.pname === productInput.value;
    // });
    // // 筛选完后将内容渲染到页面中
    // setData(proData);
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值