Javascript 如何为每个div创建覆盖图
我正在尝试为rails迭代中的每一行创建覆盖Javascript 如何为每个div创建覆盖图,javascript,html,css,ruby-on-rails,overlay,Javascript,Html,Css,Ruby On Rails,Overlay,我正在尝试为rails迭代中的每一行创建覆盖 <% @inquiries.each do |inquiry| %> <div class= "col-xs-12 col-sm-12 col-lg-12 col-md-12"> </div> <% end %> 对于每个查询,我想有一个按钮,当点击时,会显示一个覆盖图,上面有对该查询的详细评论 每项质询都有许多意见 可通过以下方式制作简单的覆盖层: <div
<% @inquiries.each do |inquiry| %>
<div class= "col-xs-12 col-sm-12 col-lg-12 col-md-12">
</div>
<% end %>
对于每个查询,我想有一个按钮,当点击时,会显示一个覆盖图,上面有对该查询的详细评论
每项质询都有许多意见
可通过以下方式制作简单的覆盖层:
<div id="overlay">
<div id="text">Overlay Text</div>
<button onclick="off()">Turn off overlay</button>
</div>
<div style="padding:20px">
<h2>Overlay with Text</h2>
<button onclick="on()">Turn on overlay effect</button>
</div>
<script>
function on() {
document.getElementById("overlay").style.display = "block";
}
function off() {
document.getElementById("overlay").style.display = "none";
}
</script>
#overlay {
position: fixed;
display: none;
width: 100%;
height: 100%;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0,0,0,0.8);
z-index: 2;
cursor: pointer;
}
#text{
position: absolute;
top: 50%;
left: 50%;
font-size: 50px;
color: white;
transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
}
覆盖文本
关闭覆盖
用文字覆盖
启用覆盖效果
关于()的函数{
document.getElementById(“覆盖”).style.display=“块”;
}
函数off(){
document.getElementById(“覆盖”).style.display=“无”;
}
#覆盖层{
位置:固定;
显示:无;
宽度:100%;
身高:100%;
排名:0;
左:0;
右:0;
底部:0;
背景色:rgba(0,0,0,0.8);
z指数:2;
光标:指针;
}
#正文{
位置:绝对位置;
最高:50%;
左:50%;
字体大小:50px;
颜色:白色;
转换:翻译(-50%,-50%);
-ms转换:翻译(-50%,-50%);
}
但它使用id来识别相应的重叠。如果我使用类,就不会有任何标识,覆盖将产生干扰
我的问题是,如何为每个查询创建具有不同内容的独立覆盖,这意味着每个查询都有一个按钮,用于打开包含不同项目(查询注释)的覆盖。在单击函数中将“this”作为参数传递,这将使您能够访问单击的当前元素。然后遍历函数中的参数以访问其父元素。例如:
<button onclick="on(this)">Turn on overlay effect</button>
function on(clickedElement) {
clickedElement.parentElement.parentElement.style.display = "block";
}
启用覆盖效果
功能开启(单击元件){
单击eElement.parentElement.parentElement.style.display=“块”;
}
希望这有帮助 多亏@grey.dim,我才知道方向。使用以下方法解决此问题:
<div class = "overlayparent">
<div class="overlay">
<div id="text">Overlay Text</div>
<button onclick="off(this)" type="button" class = "btn btn-danger">Turn off overlay</button>
</div>
<div>
<button onclick="on(this)" type="button" class = "btn btn-danger">View/Add Comments</button>
</div>
</div>
覆盖文本
关闭覆盖
查看/添加评论
对于我使用的javascript:
<script>
function on(clickedElement) {
clickedElement.parentElement.parentElement.getElementsByClassName("overlay")[0].style.display = "block";
}
function off(clickedElement) {
clickedElement.parentElement.parentElement.getElementsByClassName("overlay")[0].style.display = "none";
}
</script>
功能开启(单击元件){
单击eElement.parentElement.parentElement.getElementsByClassName(“覆盖”)[0].style.display=“块”;
}
功能关闭(单击“元素”){
单击edElement.parentElement.parentElement.getElementsByClassName(“覆盖”)[0]。style.display=“无”;
}