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

Bootstrap模态框同时展示文本与视频的实现问题

问题解决:Bootstrap模态框同时显示文本和视频

你当前遇到的问题核心是:先用textContent给模态框主体设置了文本,但紧接着用innerHTML直接替换了整个#modal_body的内容,导致之前的文本被完全覆盖,最终只显示视频。

下面给你几种可行的解决思路:

方案1:直接拼接文本与视频HTML

用模板字符串把文本和视频标签组合起来,一次性赋值给innerHTML,就能同时保留两者:

document.getElementById("giza_Pyramid").addEventListener("click", function () {
  document.querySelector("#modal_title").textContent = "Pyramids of Giza";
  // 用模板字符串拼接文本和视频,<br>用来换行,也可以用Bootstrap的间距类比如mt-3增加留白
  document.querySelector("#modal_body").innerHTML = `${strText1}<br><br><video class="giza_Pyramid" width="450" height="350" controls src="Media/gizapyramids.mp4"></video>`;
});

方案2:通过DOM操作分步添加内容

这种方式更灵活,适合后续需要调整布局的场景,避免直接拼接HTML字符串:

document.getElementById("giza_Pyramid").addEventListener("click", function () {
  document.querySelector("#modal_title").textContent = "Pyramids of Giza";
  const modalBody = document.querySelector("#modal_body");
  
  // 先清空模态框主体的原有内容,防止重复点击叠加内容
  modalBody.innerHTML = "";
  
  // 添加文本内容(用p标签包裹更符合语义)
  const textElement = document.createElement("p");
  textElement.textContent = strText1;
  modalBody.appendChild(textElement);
  
  // 创建并添加视频元素
  const videoElement = document.createElement("video");
  videoElement.className = "giza_Pyramid";
  videoElement.width = 450;
  videoElement.height = 350;
  videoElement.controls = true;
  videoElement.src = "Media/gizapyramids.mp4";
  // 用Bootstrap的margin类给视频加顶部间距
  videoElement.classList.add("mt-3");
  
  modalBody.appendChild(videoElement);
});

方案3:拆分模态框主体结构(推荐)

如果允许调整模态框的HTML结构,建议把文本和视频放在独立的容器里,逻辑更清晰,维护更方便:
首先修改模态框的HTML:

<div class="modal-body">
  <div id="modal-content-text" class="mb-3"></div>
  <div id="modal-content-video"></div>
</div>

然后修改JS代码,分别给两个容器赋值:

document.getElementById("giza_Pyramid").addEventListener("click", function () {
  document.querySelector("#modal_title").textContent = "Pyramids of Giza";
  // 设置文本内容
  document.querySelector("#modal-content-text").textContent = strText1;
  // 设置视频内容
  document.querySelector("#modal-content-video").innerHTML = '<video class="giza_Pyramid" width="450" height="350" controls src="Media/gizapyramids.mp4"></video>';
});

额外提示

你原代码里用if包裹事件绑定是错误的:addEventListener没有返回值(返回undefined),导致这个if条件不成立,点击事件根本没被正确绑定。一定要去掉多余的if,直接绑定事件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:42:48