帮我用HTML写一个1到400随机抽取号数的程序,需要有抽取动画,抽取号数不重复,并有已经抽取过的数字显示区
时间: 2023-11-22 15:52:01 浏览: 126
随机选不重复号程序
5星 · 资源好评率100%
好的,以下是一个简单的HTML代码,可以实现你所需的功能:
```
<!DOCTYPE html>
<html>
<head>
<title>随机抽取号数</title>
<meta charset="UTF-8">
<style>
#results {
margin-top: 20px;
font-size: 20px;
font-weight: bold;
text-align: center;
}
#num-box {
margin-top: 20px;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.num {
width: 40px;
height: 40px;
background-color: #EEE;
border: 1px solid #CCC;
margin: 5px;
font-size: 18px;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.num.selected {
background-color: #F00;
color: #FFF;
}
@keyframes shake {
0% { transform: translate(0, 0); }
25% { transform: translate(-5px, 0); }
50% { transform: translate(5px, 0); }
75% { transform: translate(-5px, 0); }
100% { transform: translate(0, 0); }
}
</style>
</head>
<body>
<h1>随机抽取号数</h1>
<p>点击下面的数字进行抽取</p>
<div id="num-box">
<!-- 生成1-400的数字方块 -->
<?php
for ($i=1; $i<=400; $i++) {
echo '<div class="num" data-num="'.$i.'">'.$i.'</div>';
}
?>
</div>
<div id="results"></div>
<script>
// 获取所有数字方块
var nums = document.querySelectorAll('.num');
// 获取结果显示区域
var results = document.querySelector('#results');
// 已经抽取过的数字
var selectedNums = [];
// 点击数字方块进行抽取
nums.forEach(function(num) {
num.addEventListener('click', function() {
// 如果该数字已经抽过,不再进行抽取
if (selectedNums.indexOf(num.dataset.num) !== -1) {
return;
}
// 随机抽取一个数字
var randomNum = Math.floor(Math.random() * (nums.length - selectedNums.length)) + 1;
// 将已经抽取的数字加入已选择数组
selectedNums.push(num.dataset.num);
// 显示结果
results.innerHTML = '恭喜您抽到了数字:' + randomNum;
// 将已经抽取的数字显示为已选中状态
num.classList.add('selected');
// 抽取动画
num.animate([
{ transform: 'translate(0, 0)' },
{ transform: 'translate(-5px, 0)' },
{ transform: 'translate(5px, 0)' },
{ transform: 'translate(-5px, 0)' },
{ transform: 'translate(0, 0)' }
], {
duration: 500,
easing: 'ease-out'
});
});
});
</script>
</body>
</html>
```
在这个HTML代码中,我们使用了PHP来生成1到400的数字方块,并给每个数字方块加上了一个 `data-num` 属性,用于记录该数字方块对应的数字。
在JavaScript代码中,我们首先获取所有数字方块,并为它们添加了一个 `click` 事件监听器。当用户点击数字方块时,我们首先判断该数字是否已经被抽取过,如果是,则直接返回,不再进行抽取。
如果该数字还没有被抽取过,则使用 `Math.random()` 函数随机抽取一个数字。注意,我们需要排除已经抽取过的数字,因此要用 `(nums.length - selectedNums.length)` 来计算可供抽取的数字个数。
抽取完数字后,我们将抽取过的数字加入已选择数组,并将结果显示出来。同时,将已经抽取的数字方块显示为已选中状态,并添加抽取动画。
另外,我们还添加了一个 `selectedNums` 数组,用于记录已经抽取过的数字,以避免重复抽取。并为结果显示区域和数字方块添加了一些样式。
希望这个代码能够满足你的需要,如有问题可以随时提出。
阅读全文