javascript - 多次使用 JavaScript 脚本

标签 javascript html css

我不相信以前有人问过这个问题。如果有,我很抱歉,因为我找不到它。

我有一个带有图片作为按钮的 HTML 表格:

<td>
  <button class="trigger">
    <img src="D:\Elly Research\ CO2858\Presentation\Calypso_map.jpg">
  </button>
</td>

<div class="modal">
  <div class="modal-content">
    <span class="close-button">&times; </span>
    <img src="D:\Elly Research\CO2858\Presentation\Calypso_map.jpg">
    <script src="D:\Elly Research\CO2858\Presentation\modal.js"></script>
  </div>
</div>

这是由脚本控制的:

var modal = document.querySelector(".modal");
var trigger = document.querySelector (".trigger");
var closeButton = document.querySelector(".close-button");

function toggleModal() {
  modal.classList.toggle("show-modal");
}

function windowOnClick(event) {
  if(event.target === modal){
    toggleModal();
  }
}

trigger.addEventListener("click", toggleModal);
closeButton.addEventListener("click", toggleModal);
window.addEventListener("click", windowOnClick);

如果我复制第一张图片的格式并将其用于同一表格和同一页面中的第二张图片,它将停止工作。

JavaScript 是否不像 CSS 那样可以使用多个 ID 由一个 CSS 值控制?

这是我第一次将 JavaScript 与 HTML 和 CSS 结合使用。

最佳答案

当您执行 document.querySelector(".modal") 时,您选择的是第一个具有“modal”类的节点。在您的情况下,这将是包含第一张图片的 div。稍后您将 'click' 事件仅添加到第一张图片。

您可以使用 querySelectorAll,它返回所有匹配节点的列表并遍历所有节点以添加 'click' 事件监听器,如下所示:

const modals = document.querySelector(".modal");

modals.forEach(modal => {
    modal.addEventListener('click', toggleModal)
});

关于javascript - 多次使用 JavaScript 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51864644/

相关文章:

javascript - 使用 jquery 切换图像

css - 在 wordpress 中使用 get_option() 在 css 中添加背景图片

javascript - 将函数添加到 $scope 的性能优势?

Javascript - 为什么 isNaN(1 + null) 返回 false?

javascript - 从页面上的链接触发 fancybox - 具有多个相册的图片库

html - 如何强制行及其列使用​​其父元素 (jumbotron) 高度的 100%

javascript - 防止输入设备提交 angularjs 表单

html - 有没有办法让文本出现在绝对元素下方而不向元素添加 margin-top ?

html - 为什么我循环中的第一篇文章意外缩进

css - 用于未知元素和未知高度的 sass 网格混合