无法在一页中插入03弹出窗口

时间:2020-10-08 19:28:12

标签: javascript html jquery css

我正在尝试在页面上实现03弹出窗口,但无法执行。我试图通过为每个弹出窗口分配不同的ID来实现这一目标。非常感谢您的帮助。这是我的代码 CSS:

.fa {
  font-size: 50px;
  cursor: pointer;
  user-select: none;
}

.fa:hover {
  font-size:20px;
  transition: 1s ease-out;
}

/* Popup container - can be anything you want */
.popup {
  position: relative;
  display: inline-block;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* The actual popup */
.popup .popuptext {
  visibility: hidden;
  width: 160px;
  background-color: #555;
  color: #fff;
  text-align: center;
  border-radius: 6px;
  padding: 8px 0;
  position: absolute;
  z-index: 1;
  bottom: 125%;
  left: 50%;
  margin-left: -80px;
}

/* Popup arrow */
.popup .popuptext::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: #555 transparent transparent transparent;
}

/* Toggle this class - hide and show the popup */
.popup .show {
  visibility: visible;
  -webkit-animation: fadeIn 1s;
  animation: fadeIn 1s;
}

/* Add animation (fade in the popup) */
@-webkit-keyframes fadeIn {
  from {opacity: 0;} 
  to {opacity: 1;}
}

@keyframes fadeIn {
  from {opacity: 0;}
  to {opacity:1 ;}
}

这是我的HTML:

<div class="popup" onclick="myFunction()"><i onclick="myFunctions(this)" class="fau fa fa-plus-circle"></i>
  <span class="popuptext" id="myPopup">A Simple Popup!</span>
</div>

我的JS代码:

// When the user clicks on div, open the popup
function myFunction() {
  var popup = document.getElementById("myPopup");
  popup.classList.toggle("show");
}
function myFunctions(x) {
  x.classList.toggle("fa-times-circle");
}

我在这里尝试应用第二个弹出窗口:

<div class="popup" onclick="myFunction()"><i onclick="myFunctions(this)" class="fau fa fa-plus-circle"></i>
  <span class="popuptext" id="myPopup2">A Simple Popup 2</span>
</div>

<script>
function myFunction() {
  var popup = document.getElementById("myPopup2");
  popup.classList.toggle("show");
}
</script>

,与弹出窗口三相同。我被困在这里。预先感谢

1 个答案:

答案 0 :(得分:0)

您不能创建多个具有相同名称的函数。但是,一种解决方案是创建一个可重用的函数,并将clicked元素传递给它。然后在弹出div上还添加一个名为data-target的数据属性,其中包含要打开的弹出窗口的ID。

例如:

<div class="popup" data-target="myPopup" onclick="myFunction(this)">

<div class="popup" data-target="myPopup2" onclick="myFunction(this)">

那么您只需要以下单个功能,就不必重复它。

function myFunction(el){
  var popup = document.getElementById(el.dataset.target);
  popup.classList.toggle("show");
}