html - 如何复制粘贴模式

标签 html css modal-dialog bootstrap-modal

对于一个学校元素,我想为我类的每个学生制作模态。我的问题是只有第一个模态有效。

// 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 on 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";
  }
}
/* The Modal (background) */

.modal {
  display: none;
  /* Hidden by default */
  position: fixed;
  /* Stay in place */
  z-index: 1;
  /* Sit on top */
  left: 0;
  top: 0;
  width: 100%;
  /* Full width */
  height: 100%;
  /* Full height */
  overflow: auto;
  /* Enable scroll if needed */
  background-color: rgb(0, 0, 0);
  /* Fallback color */
  background-color: rgba(0, 0, 0, 0.4);
  /* Black w/ opacity */
}


/* Modal Content/Box */

.modal-content {
  background-color: #fefefe;
  margin: 14% auto;
  /* 15% from the top and centered */
  padding: 20px;
  border: none;
  width: 80%;
  /* Could be more or less, depending on screen size */
  box-shadow: 0 10px 20px 0px rgba(0, 0, 0, 0.5);
}


/* The Close Button */

.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}


/* Button Design */

#myBtn {
  background-image: url(/images/blank-profile-picture-973460_960_720.png);
  font-family: Lato-Bold;
  font-size: 20px;
  background-color: rgb(55, 154, 177);
  background-size: cover;
  width: 300px;
  height: 300px;
  margin: 10px;
  float: left;
  text-align: center;
  color: white;
  border: 0;
  cursor: pointer;
}

p.Info {
  font-family: Lato-regular;
  font-size: 15px;
  color: rgb(40, 40, 40);
}
<!-- Trigger/Open The Modal -->
<button id="myBtn">Anthony</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close">&times;</span>
    <p class="Info">
      Nachname:König<br> Vorname:Anthony
      <br> Geburtstag:24.12.1998
      <br> Herkunft:Deutschland
      <br> Adresse:xxxxxxxxxxxxxxxxx
      <br> Mobilnummer:xxxxxxxxxxxxxx
      <br> E-Mail:xxxxxxxxxxxxxxxxxbr> Fachlicher Schwerpunkt:Programmieren<br> Hobbys:Basketball, Tennis, Krafttraining, Gaming und Fussball.<br> Socialmedia:url Facebook: url Instagram:<br> Snapcode: anthony.k1ng<br>
    </p>
  </div>

</div>
<!-- Trigger/Open The Modal -->
<button id="myBtn">David</button>

<!-- The Modal -->
<div id="myModal" class="modal">

  <!-- Modal content -->
  <div class="modal-content">
    <span class="close">&times;</span>
    <p class="Info">
      Nachname:König<br> Vorname:Anthony
      <br> Geburtstag:24.12.1998
      <br> Herkunft:Deutschland
      <br> Adresse:xxxxxxxxxxxxxxxxxxxxxx
      <br> Mobilnummer:xxxxxxxxxxxxxxxxxx
      <br> E-Mail:xxxxxxxxxxxxxxxx
      <br> Fachlicher Schwerpunkt:Programmieren<br> Hobbys:Basketball, Tennis, Krafttraining, Gaming und Fussball.<br> Socialmedia:url Facebook: url Instagram:<br> Snapcode: anthony.k1ng<br>
    </p>
  </div>

</div>

最佳答案

这是更通用的方法,它依赖于 dom 元素的排序。

在这种情况下,如果您想添加更多内容,您只需复制按钮和模态 html 并更改内容即可。您不必更改代码、CSS 或 div id。

JSFiddle相同。

// Get the modals
var modals = document.getElementsByClassName('myModal');

// Get the buttons that opens the modals
var btns = document.getElementsByClassName("myBtn");

// Get the <span> elements that closes the modals
var spans = document.getElementsByClassName("close");

function makeShower(index) {
	return function(event) {
  	modals[index].style.display = "block";
  }
}

function makeHider(index) {
	return function(event) {
  	modals[index].style.display = "none";
  }
}

for (let i = 0; i < btns.length; i++) {
  btns[i].onclick = makeShower(i);
  spans[i].onclick = makeHider(i);
}

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
  if (event.target.className == "myModal modal") {
    event.target.style.display = "none";
  }
}
/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 1; /* Sit on top */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}

/* Modal Content/Box */
.modal-content {
    background-color: #fefefe;
    margin: 14% auto; /* 15% from the top and centered */
    padding: 20px;
    border: none;
    width: 80%; /* Could be more or less, depending on screen size */
        box-shadow: 0 10px 20px 0px rgba(0, 0, 0, 0.5);
}

/* The Close Button */
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
}

.close:hover,
.close:focus {
    color: black;
    text-decoration: none;
    cursor: pointer;
}
/* Button Design */
.myBtn {
  background-image: url(/images/blank-profile-picture-973460_960_720.png);
   font-family: Lato-Bold;
   font-size: 20px;
   background-color: rgb(55, 154, 177);
   background-size:cover;
   width: 300px;
   height: 300px;
   margin: 10px;
   float: left;
   text-align: center;
   color:white;
   border:0;
   cursor: pointer;
}

p.Info {
     font-family: Lato-regular;
     font-size: 15px;
     color: rgb(40, 40, 40);


}
  <!-- Trigger/Open The Modal -->
<button class="myBtn">Anthony</button>

<!-- The Modal -->
<div class="myModal modal">

<!-- Modal content -->
<div class="modal-content">
<span class="close">&times;</span>
<p class="Info">
Nachname:König<br>
Vorname:Anthony<br>
Geburtstag:24.12.1998<br>
Herkunft:Deutschland<br>
Adresse:xxxxxxxxxxxxxxxxx<br>
Mobilnummer:xxxxxxxxxxxxxx<br>
E-Mail:xxxxxxxxxxxxxxxxxbr>
Fachlicher Schwerpunkt:Programmieren<br>
Hobbys:Basketball, Tennis, Krafttraining, Gaming und Fussball.<br>
Socialmedia:url Facebook: url Instagram:<br>
Snapcode: anthony.k1ng<br>
</p>
</div>

</div>
 <!-- Trigger/Open The Modal -->
<button class="myBtn">David</button>

<!-- The Modal -->
<div class="myModal modal" >

<!-- Modal content -->
<div class="modal-content">
<span class="close">&times;</span>
<p class="Info">
Nachname:David<br>
Vorname:David<br>
Geburtstag:24.12.1998<br>
Herkunft:Deutschland<br>
Adresse:xxxxxxxxxxxxxxxxxxxxxx<br>
Mobilnummer:xxxxxxxxxxxxxxxxxx<br>
E-Mail:xxxxxxxxxxxxxxxx<br>
Fachlicher Schwerpunkt:Programmieren<br>
Hobbys:Basketball, Tennis, Krafttraining, Gaming und Fussball.<br>
Socialmedia:url Facebook: url Instagram:<br>
Snapcode: anthony.k1ng<br>
</p>
</div>

</div>

关于html - 如何复制粘贴模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308543/

相关文章:

jquery - JavaScript,让用户只关注某些页面元素?

html - Bootstrap 3.3 在模态上显示双滚动条

css - 在页面加载时激活 CSS 效果

javascript - Html5 中的 3 层 Canvas

jquery - Twitter Bootstrap 模式中的自动对焦输入

Jquery 阻止链接但保留 url anchor

javascript - 为什么我的背景图片会缩放?

javascript - Bootstrap 3 旋转木马和导航栏不工作

html - 如何使用语义 UI 垂直对齐不同大小的图像

html - 行内 block 元素偏离位置