当前位置:首页 > JavaScript

js实现照片抽奖

2026-03-01 16:14:25JavaScript

实现照片抽奖功能

照片抽奖功能可以通过随机选择数组中的元素来实现。以下是一个简单的实现方案:

js实现照片抽奖

HTML结构

创建一个包含照片展示区域和抽奖按钮的HTML结构:

js实现照片抽奖

<div id="photo-container"></div>
<button id="draw-button">开始抽奖</button>

JavaScript实现

// 照片数组
const photos = [
  {name: '张三', url: 'photo1.jpg'},
  {name: '李四', url: 'photo2.jpg'},
  {name: '王五', url: 'photo3.jpg'},
  // 更多照片...
];

// 获取DOM元素
const photoContainer = document.getElementById('photo-container');
const drawButton = document.getElementById('draw-button');

// 抽奖逻辑
function drawLottery() {
  // 清空容器
  photoContainer.innerHTML = '';

  // 随机选择照片
  const randomIndex = Math.floor(Math.random() * photos.length);
  const winner = photos[randomIndex];

  // 显示中奖照片
  const img = document.createElement('img');
  img.src = winner.url;
  img.alt = winner.name;
  photoContainer.appendChild(img);

  // 显示中奖者姓名
  const name = document.createElement('p');
  name.textContent = `中奖者: ${winner.name}`;
  photoContainer.appendChild(name);
}

// 绑定按钮事件
drawButton.addEventListener('click', drawLottery);

增强功能

如果需要更复杂的抽奖效果,可以添加以下功能:

// 添加抽奖动画效果
let animationInterval;
drawButton.addEventListener('click', function() {
  // 如果已经在抽奖,停止当前抽奖
  if(animationInterval) {
    clearInterval(animationInterval);
    animationInterval = null;
    return;
  }

  // 开始快速切换显示照片
  animationInterval = setInterval(() => {
    const randomIndex = Math.floor(Math.random() * photos.length);
    photoContainer.innerHTML = '';
    const img = document.createElement('img');
    img.src = photos[randomIndex].url;
    photoContainer.appendChild(img);
  }, 100);

  // 3秒后停止并显示最终结果
  setTimeout(() => {
    clearInterval(animationInterval);
    animationInterval = null;
    drawLottery();
  }, 3000);
});

注意事项

  1. 确保照片路径正确
  2. 考虑添加音效增强体验
  3. 可以添加排除已中奖者的逻辑
  4. 对于大量照片,考虑使用懒加载技术

完整示例

<!DOCTYPE html>
<html>
<head>
  <title>照片抽奖</title>
  <style>
    #photo-container {
      width: 300px;
      height: 300px;
      border: 1px solid #ccc;
      margin-bottom: 20px;
    }
    #photo-container img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
  </style>
</head>
<body>
  <div id="photo-container"></div>
  <button id="draw-button">开始抽奖</button>

  <script>
    const photos = [
      {name: '张三', url: 'https://example.com/photo1.jpg'},
      {name: '李四', url: 'https://example.com/photo2.jpg'},
      {name: '王五', url: 'https://example.com/photo3.jpg'},
    ];

    const photoContainer = document.getElementById('photo-container');
    const drawButton = document.getElementById('draw-button');

    function drawLottery() {
      photoContainer.innerHTML = '';
      const randomIndex = Math.floor(Math.random() * photos.length);
      const winner = photos[randomIndex];

      const img = document.createElement('img');
      img.src = winner.url;
      img.alt = winner.name;
      photoContainer.appendChild(img);

      const name = document.createElement('p');
      name.textContent = `中奖者: ${winner.name}`;
      photoContainer.appendChild(name);
    }

    drawButton.addEventListener('click', drawLottery);
  </script>
</body>
</html>

标签: 照片js
分享给朋友:

相关文章

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…