发表于: 2023-03-13 20:01:54

0 118





今天的js知识:

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <meta name="viewport"
         content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
</head>
<body>

       <script>
           const arr = [10, 20, 30]
// filter 筛选数组符合条件的元素,并返回筛选之后元素的新数组
           // const newArr = arr.filter(function (item, index) {
           //     // console.log(item)
           //     // console.log(index)
           //     return item >= 20
           // })


           const newArr = arr.filter(item => item >= 20)
console.log(newArr)
</script>

</body>
</html>


<!DOCTYPE html>
<html lang="en">

<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>商品渲染</title>
   <style>
       * {
margin: 0;
           padding: 0;
           box-sizing: border-box;
       }

.list {
width: 990px;
           margin: 0 auto;
           display: flex;
           flex-wrap: wrap;
       }

.item {
width: 240px;
           margin-left: 10px;
           padding: 20px 30px;
           transition: all .5s;
           margin-bottom: 20px;
       }

.item:nth-child(4n) {
margin-left: 0;
       }

.item:hover {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
           transform: translate3d(0, -4px, 0);
           cursor: pointer;
       }

.item img {
width: 100%;
       }

.item .name {
font-size: 18px;
           margin-bottom: 10px;
           color: #666;
       }

.item .price {
font-size: 22px;
           color: firebrick;
       }

.item .price::before {
content: "¥";
           font-size: 14px;
       }

.filter {
display: flex;
           width: 990px;
           margin: 0 auto;
           padding: 50px 30px;
       }

.filter a {
padding: 10px 20px;
           background: #f5f5f5;
           color: #666;
           text-decoration: none;
           margin-right: 20px;
       }

.filter a:active,
       .filter a:focus {
background: #05943c;
           color: #fff;
       }
</style>
</head>

<body>
<div class="filter">
   <a data-index="1" href="javascript:;">0-100</a>
   <a data-index="2" href="javascript:;">100-300</a>
   <a data-index="3" href="javascript:;">300元以上</a>
   <a href="javascript:;">全部区间</a>
</div>
<div class="list">
   <!-- <div class="item">
     <img src="" alt="">
     <p class="name"></p>
     <p class="price"></p>
   </div> -->
</div>
<script>
   // 2. 初始化数据
   const goodsList = [
{
id: '4001172',
           name: '称心如意手摇咖啡磨豆机咖啡豆研磨机',
           price: '289.00',
           picture: 'https://yanxuan-item.nosdn.127.net/84a59ff9c58a77032564e61f716846d6.jpg',
       },
       {
id: '4001594',
           name: '日式黑陶功夫茶组双侧把茶具礼盒装',
           price: '288.00',
           picture: 'https://yanxuan-item.nosdn.127.net/3346b7b92f9563c7a7e24c7ead883f18.jpg',
       },
       {
id: '4001009',
           name: '竹制干泡茶盘正方形沥水茶台品茶盘',
           price: '109.00',
           picture: 'https://yanxuan-item.nosdn.127.net/2d942d6bc94f1e230763e1a5a3b379e1.png',
       },
       {
id: '4001874',
           name: '古法温酒汝瓷酒具套装白酒杯莲花温酒器',
           price: '488.00',
           picture: 'https://yanxuan-item.nosdn.127.net/44e51622800e4fceb6bee8e616da85fd.png',
       },
       {
id: '4001649',
           name: '大师监制龙泉青瓷茶叶罐',
           price: '139.00',
           picture: 'https://yanxuan-item.nosdn.127.net/4356c9fc150753775fe56b465314f1eb.png',
       },
       {
id: '3997185',
           name: '与众不同的口感汝瓷白酒杯套组14',
           price: '108.00',
           picture: 'https://yanxuan-item.nosdn.127.net/8e21c794dfd3a4e8573273ddae50bce2.jpg',
       },
       {
id: '3997403',
           name: '手工吹制更厚实白酒杯壶套装66',
           price: '99.00',
           picture: 'https://yanxuan-item.nosdn.127.net/af2371a65f60bce152a61fc22745ff3f.jpg',
       },
       {
id: '3998274',
           name: '德国百年工艺高端水晶玻璃红酒杯2支装',
           price: '139.00',
           picture: 'https://yanxuan-item.nosdn.127.net/8896b897b3ec6639bbd1134d66b9715c.jpg',
       },
   ]
//渲染数据
   function render(arr) {
//利用map遍历
       const newArr = arr.map(item => {
//对象解构
           const { name, price, picture } = item
return `
         <div class="item">
           <img src="${picture}" alt="">
           <p class="name">${name}</p>
           <p class="price">${price}</p>
         </div>

         `
       })
document.querySelector('.list').innerHTML = newArr.join('')
}
render(goodsList)

//筛选对应的商品
   //给所有的a注册点击事件
   //然后判断点的是哪一个
   //然后利用filter筛选出对应的元素放到新数组里,然后重新渲染数据
   //获取元素
   const a = document.querySelectorAll('.filter a')
//循环注册点击事件
   for (let i = 0; i < a.length; i++) {
a[i].addEventListener('click', function () {
//获取自定义属性
           const index = +this.dataset.index

//定义一个空数组
           // let arr = []
           // if (index === 1) {
           //     arr = goodsList.filter(function (item) {
           //         const { price } = item
           //         return price > 0 && price <= 100
           //     })
           // } else if (index === 2) {
           //     arr = goodsList.filter(function (item) {
           //         const { price } = item
           //         return price >= 100 && price <= 300
           //     })
           // } else if (index === 3) {
           //     arr = goodsList.filter(function (item) {
           //         const { price } = item
           //         return price >= 300
           //     })
           // } else {
           //     arr = goodsList
           // }


           //定义一个空数组
           let arr = []
if (index === 1) {
arr = goodsList.filter(item => item.price > 0 && item.price <= 100)
} else if (index === 2) {
arr = goodsList.filter(item => item.price >= 100 && item.price <= 300)
} else if (index === 3) {
arr = goodsList.filter(item => item.price >= 300)
}else {
arr = goodsList
               }

// 渲染函数
           render(arr)
})
}

// document.querySelector('.filter').addEventListener('click', e => {
   //     const { tagName, dataset } = e.target
   //     if (tagName === 'A') {
   //         if (dataset.index === '1') {
   //             arr = goodsList.filter(item => item.price > 0 && item.price <= 100)
   //         } else if (dataset.index === '2') {
   //             arr = goodsList.filter(item => item.price >= 100 && item.price <= 300)
   //         } else if (dataset.index === '3') {
   //             arr = goodsList.filter(item => item.price >= 300)
   //         } else {
   //             arr = goodsList
   //         }
   //     }
   //     render(arr)
   // })

</script>
</body>

</html>




返回列表 返回列表
评论

    分享到