javascript - onclick 函数中的 onclick
问题描述
我有一个显示模态的基本问题。一切正常,但仅适用于第二次点击。我敢肯定,我在js代码中有一些错误。你能帮我吗?
HTML 代码:
<div class="flex flex-col lg:flex-row justify-center px-3 lg:px-0">
<div class="pb-3 lg:pb-0 lg:p-5 cursor-pointer">
<img onclick="showImage('planek1')" id="planek1" src="assets/imgs/planek1.jpg" alt="">
</div>
<div class="cursor-pointer lg:p-5">
<img onclick="showImage('planek2')" id="planek2" src="assets/imgs/planek2.jpg" alt="">
</div>
</div>
<div id="myModal" class="modal">
<span class="close">×</span>
<img class="modal-content" id="img01">
<div id="caption"></div>
</div>
Javascript代码:
function showImage(id) {
const modal = document.getElementById("myModal");
const img = document.getElementById(id);
const modalImg = document.getElementById("img01");
img.onclick = function () {
modal.style.display = "block";
modalImg.src = this.src;
};
const span = document.getElementsByClassName("close")[0];
span.onclick = function () {
modal.style.display = "none";
};
}
解决方案
尝试删除onclick="showImage('planek2')"
,给class="triggers-modal"
你的元素一个,然后编写这个 JavaScript:
const modalImg = document.getElementById("img01");
const span = document.getElementsByClassName("close")[0];
span.onclick = function () {
modal.style.display = "none";
};
Array.from(document.getElementsByClassName('triggers-modal')).forEach(element => {
element.onclick = function () {
modal.style.display = "block";
modalImg.src = this.src;
};
});
triggers-modal
这段代码为每个具有类名的元素定义了模式行为,而不是onclick
不合适的事件。
推荐阅读
- python - 年龄字段的MongoDB复杂聚合管道
- c# - 核心 3.1 控制台应用程序错误不工作
- python - 使用python抓取全选复选框
- python - while condition true if value appears in list of tuples
- swiftui - 使用 AWS AppSync 在 SwiftUI 中指定 graphql 查询的请求字段
- c++ - 在抛出 'std::bad_alloc' 的实例后调用终止 what(): std::bad_alloc 在推回向量后
- python - 简单的验证导致无限循环
- openldap - 使用 pwdGraceUseTime 检查密码 OpenLDAP
- oracle - Oracle语句触发器无法访问表值
- powerbi - 使用 DAX 计算 PowerBI 中 2 行之间的差异