<div class="bt" onclick="play()">抽奖</div><div class="box"></div>
<style>.bt{background-color: red;color: aliceblue;font-size: 30px;border-radius: 10px;width: 200px;margin-left: 50px;text-align: center;margin-bottom: 30px;}.box {display: grid;grid-template-columns: repeat(auto-fill, 30px);grid-auto-rows: 30px;gap: 5px;}.box>div {border-radius: 50%;display: grid;place-items: center;background-color: red;color: white;box-shadow: 2px 2px 2px #666;}.box>div:last-of-type {background-color: blue;}</style>
function play(){// 临时数组: 放红球let arr = [];// 中奖数组,6个红球,1个蓝球let res = [];// 1. 生成1-33个红球for (let i = 1; i <= 33; i++) {arr.push(i);}// 2、在33个红球中随机不重复取出6个数for (let i = 0; i < 6; i++) {// 原理:取到一个,原数组就删掉对应的数let index = Math.floor(Math.random() * arr.length);res.push(arr[index]);arr.splice(index,1);}// 将取出的6个红球进行排序res.sort((a, b) => a - b);// 3、在1-16中随机取出一个蓝球let blue = Math.floor(Math.random() * 16) + 1;res.push(blue);// 4、显示双色球数组const box = document.querySelector('.box');res.forEach(item=>{const ball = document.createElement('div');ball.textContent = item;box.append(ball);});}</script>

<div class="box"><!-- 1. 标签 --><!-- 子元素上的点击事件会冒泡到父元素,利用这个特点,只需要给父元素添加点击事件就可以了 --><ul class="menu" onclick="show()"><!-- 先给默认显示的标签和对应的内容添加 class="active"处于激活状态/可见 --><!-- 使用自定义属性data-index使标签和与之对应的内容进行绑定 --><li data-index="1" class="active">本省</li><li data-index="2">全国</li><li data-index="3">防疫</li></ul><!-- 2. 内容 --><ul class="content active" data-index="1"><li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li><li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li><li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li><li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li><li><a href="">刚刚通报!2021安徽GDP预计破4万亿元!</a></li></ul><ul class="content" data-index="2"><li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li><li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li><li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li><li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li><li><a href="">总书记关心北京冬奥会,冬残奥会筹办纪实</a></li></ul><ul class="content" data-index="3"><li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li><li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li><li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li><li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li><li><a href="">坚持“动态清零”不动摇(人民论坛)</a></li></ul></div>
<style>.box {width: 28em;display: grid;grid-template-columns: 3em 1fr;}.box ul {margin: 0;padding: 0;}.box li {list-style: none;}.box li a {text-decoration: none;}.box li:hover {cursor: pointer;}.box .content {background-color: rgb(131, 201, 191);display: none;place-self: center start;}.box .content.active {display: block;}.box .menu li.active {background-color: rgb(137, 180, 174);}</style>
<script>function show() {// 绑定事件// console.log(event.currentTarget);// 事件主体// console.log(event.target);const ul = event.currentTarget;const li = event.target;// 1. 将原高亮的标签去掉active,并把当前的标签设置为active[...ul.children].forEach(li => li.classList.remove('active'));li.classList.add('active');// 2. 根据标签的data-index进行查询,获取与它对应的列表const content = document.querySelectorAll('.content');// document.querySelectorAll()console.log(content);content.forEach(li => li.classList.remove('active'));console.log([...content].filter(ul => ul.dataset.index === li.dataset.index)[0]);// filter(ul => ul.dataset.index === li.dataset.index)[0][...content].find(ul => ul.dataset.index === li.dataset.index).classList.add('active');}</script>

相关推荐
© 2020 asciim码
人生就是一场修行