You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用同一段JavaScript控制HTML中两个不同视频元素

解决方案

1. 调整HTML结构

给两个视频容器添加同一个类名(比如video-container),只引入一次JavaScript文件,不要重复引入多个同名JS:

<!-- 第一个视频容器 -->
<div class="video-container">
  <video src="你的视频地址1.mp4"></video>
  <span class="video-text">播放</span>
</div>

<!-- 第二个视频容器 -->
<div class="video-container">
  <video src="你的视频地址2.mp4"></video>
  <span class="video-text">播放</span>
</div>

<!-- 只引入一次JS -->
<script src="main.js"></script>

2. 修改JavaScript代码

把原来针对单个元素的逻辑,改成批量处理所有容器,每个容器独立绑定事件:

// 获取页面上所有带video-container类的容器
const allVideoContainers = document.querySelectorAll('.video-container');

// 遍历每个容器,单独绑定事件
allVideoContainers.forEach(container => {
  // 从当前容器里获取对应的视频和文本元素
  const video = container.querySelector('video');
  const textElement = container.querySelector('.video-text');

  // 鼠标悬停:播放视频+切换文本
  container.addEventListener('mouseenter', () => {
    video.play();
    textElement.textContent = '暂停';
  });

  // 鼠标离开:暂停视频+切换文本
  container.addEventListener('mouseleave', () => {
    video.pause();
    textElement.textContent = '播放';
  });
});

问题根源

你之前的问题是因为重复引入相同JS,且JS里大概率用了getElementById或document.querySelector()(只会匹配第一个元素),导致只有第一个视频容器能被选中并绑定事件。现在通过类选择器批量获取容器,再逐个处理,每个容器内的元素都是独立查找的,不会互相干扰。

内容的提问来源于stack exchange,提问作者SilviX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 16:28:12