js查询商品项目案例详解

查询商品案例

要求:

1、把数据渲染到页面中(forEach)

2、根据价格显示数据(filter)

3、根据商品名称显示数据(some)

》》页面html结构如下

复制代码
<style>
    table {
        width: 400px;
        border: 1px solid #000;
        border-collapse: collapse;
        margin: 0 auto;
    }
    
    tr,
    td,
    th {
        border: 1px solid #000;
        text-align: center;
    }
    
    input {
        width: 50px;
    }
    
    .search {
        width: 600px;
        margin: 20px auto;
    }
</style>

<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>
</body>
复制代码

效果图:

 

 》》需要被渲染上述页面的数据如下:

复制代码
 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 start = document.querySelector('.start');
    var end = document.querySelector('.end');
    var search_price = document.querySelector('.search-price');
    var product = document.querySelector('.product');
    var search_pro = document.querySelector('.search-pro');
    //初始调用渲染数据函数
    setDate(data);
    //2、定义一个函数setDate(mydata)专门用来把数据渲染到页面中,形参mydata接受传递过来的数组
    // 核心:利forEach()方法遍历数组中每一个元素
    function setDate(mydata) {
        //清空原来tbody里面的数据
        tbody.innerHTML = '';
        mydata.forEach(function(item) {
            var tr = document.createElement('tr'); //创建节点
            tr.innerHTML = '<td>' + item.id + '</td><td>' + item.pname + '</td><td>' + item.price + '</td>';
            tbody.appendChild(tr);
        });
    }
    //3、点击查询按钮筛选符合条件的数据并调用setDate()渲染到页面中
    search_price.addEventListener('click', function() {
        // filter()方法用来筛选数组,注意会返回一个新的数组
        var newData = data.filter(function(item) {
            return item.price >= start.value && item.price <= end.value;
        });
        setDate(newData);
    });
    //4、根据商品名称显示数据
    search_pro.addEventListener('click', function() {
        //声明一个新数组newArry用来存放满足条件的对象数据
        var newArry = [];
        //some()方法用来检测是否存在满足指定条件的元素,注意返回必须为布尔值
        data.some(function(item) {
            if (item.pname === product.value) {
                newArry.push(item);
                return true;
            }
        });
        setDate(newArry);
    })
复制代码

 

posted @   蛋蛋仔  阅读(340)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示