javascript - 我需要在一个网页中制作多个模式
问题描述
我需要在 HTML 页面中制作多个模式,我可以制作一个可以正常工作的模式,但是当我制作另一个时它不起作用。
<!-- The Modal -->
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<div class="modal-header">
<span class="close">×</span>
<h3>Edit Intro</h3>
<h2></h2>
</div>
<div class="modal-body">
<center><br> School/Collage<br><input type="text" name="" style="width:100%"><br><br>
Degree<br><input type="text" name="" style="width:100%"><br><br>
Field of study<br><input type="text" name="" style="width:100%"><br><br>
Start Date<input type="date" name=""> End Date<input type="date" name=""><br><br>
grade<br><input type="text" name="" style="width:100%"><br><br>
Descrption<br><textarea cols="30%" rows="4%"></textarea>
</div></center>
<a href=""><button class="modalsave">Save</button></a>
<a href=""><button class="modalcencel">Cencel</button></a>
</div>
</div>
<script>
// Get the modal
var modal = document.getElementById('myModal');
// Get the button that opens the modal
var btn = document.getElementById("myBtn");
// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];
// When the user clicks the button, open the modal
btn.onclick = function() {
modal.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span.onclick = function() {
modal.style.display = "none";
}
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
</script>
这一种模式有效,但是当我在同一页面上使用多个模式的代码时,顶部的模式有效,但后面的模式无效。
解决方案
模态字面意思是这样一个元素,它阻止对 UI 其余部分的访问,直到用户完成与它的交互并关闭它。因此,一次只有一个活动的模态(顶部)是正常的。
所以我猜你在这里真正要问的是 - 为什么你的代码一次不会显示多个弹出窗口。原因是这段代码不是通用的,并且引用了特定的 DOM 元素(#myModal
其所有内容都作为弹出窗口包装器,#myBtn
作为弹出窗口的触发器)并且只有.close
元素是通用的(因此任何具有.close
该类的 DOM 元素都可以起作用作为密切控制)。但同样,您只将点击处理程序附加到第一个找到的.close
元素。因此,它只显示一个弹出窗口,因为您在页面上只有一个弹出窗口。
您需要概括该代码。
推荐阅读
- node.js - 获取 user_id 电报
- python - 如何使用 Yield 来展平字典?
- reactjs - 渲染之外的 mobx-react-lite useObserver 钩子
- java - 如何使用@DynamoDbTable 注释动态传递 aws dynamodb 表名
- r - R函数删除包含数值相似数据的行
- amazon-web-services - AWS EC2 用户数据加密
- c++ - 如何最好地定义/构造/初始化 std::string 包装类
- django - django:具有多对多关系的 values() 字典
- cmake - CMAKE_CXX_FLAGS 将每个空格视为编译器标志的分隔符,并且在单个选项中需要空格
- python - 为什么连接到 MySQL 数据库时出现错误