Закрытие всплывающих окон и открытие новых - PullRequest
0 голосов
/ 16 января 2020

Я написал код. У меня есть кнопки, и каждая кнопка открывает всплывающее окно. Перед открытием я хочу, чтобы моя кнопка закрывала предыдущее всплывающее окно и открывала нужное. Я переключаю класс. Поэтому я хотел бы сначала проверить, есть ли какое-либо видимое всплывающее окно, используя getElementsByClassName(), а затем переключить его на скрытое. Затем переключите правую, используя getElementById() для отображения. Моя проблема в том, что я не знаю, как проверить видимость из моего класса .show, и если в моем Function2() сначала я буду переключаться по классу, то я не могу переключиться по id после него. Это почему? Поэтому мне нужно использовать If (стиль виден в элементе i) {then popups[i].classList.toggle("show");} после этого я хотел бы использовать:

var popup = document.getElementById("myPopup2");
  popup.classList.toggle("show");

, но он не работает. Или есть лучший способ сделать это?

function myFunction2() {

var popups = document.getElementsByClassName('popuptext');
  for(var i = 0; i < 5; i++)
  { 
 popups[i].classList.toggle("show");
 console.log(1);
 
 }
 var popup = document.getElementById("myPopup2");
  popup.classList.toggle("show");
  console.log(2);
 }
 



function myFunction() {
  var popup = document.getElementById("myPopup");
  popup.classList.toggle("show");
  
}
function myFunction3() {
 var popup = document.getElementById("myPopup3");
  popup.classList.toggle("show");
   
}
function myFunction4() {
  var popup = document.getElementById("myPopup4");
  popup.classList.toggle("show");
}
   

 .popup {
      position: absolute;
      display: inline-block;
      cursor: pointer;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: auto;
      
    
      }
    /* POPUPS--------START------------------------------------------------------------------------------------------------------- */
      .popup .popuptext {
      visibility: hidden;width: 27%; height: 93%;background-color: #fff;
       color: #004;text-align: left; border-radius: 0px;padding: 10px;
      position: fixed ; top: 48%;left: 20%;transform: translate(-50%, -50%);
       margin-left: -80px;border-left: 75px solid white; overflow:auto;border-right: 10px solid white;border-bottom: 35px solid white;
       z-index: 10;border-top: 35px solid white;
      box-shadow: inset 0 0 0 rgba(255,255,255,0.5), 2px 20px 2px rgba(0, 0, 0, 0.19);
    }
    
     /* POPUPS----------------END------------------------------------------------------------------------------------------ */
     
     /* Toggle this class - hide and show the popup */
    .popup .show {
      visibility: visible;
      -webkit-animation: fadeIn 1s;
      animation: fadeIn 1s;
      animation: move 1s;
    }
    
    /* Add animation (fade in the popup) */
    @-webkit-keyframes fadeIn {
      from {opacity: 0;} 
      to {opacity: 1;}
    }
    
    @keyframes fadeIn {
      from {opacity: 0;}
      to {opacity: 1;}
    }
    
    @keyframes move {
      from {left: 0%;}
      to {top:48% ;}
      }
      
      @-webkit-keyframes move {
      from {left: 0%;}
      to {top:48% ;}
      }
    
      /* ------------------------------------------------popup hide and show end*/
    
    body{
      
      font-family:"Trebuchet MS", Helvetica, sans-serif;
      font-size:15px;
      color: #000;
     bgcolor="#fff"
      text-transform:uppercase;
      //overflow-x:hidden;
    }
    
                  h1{
                  font-size:80px;
                  text-align:right;
                  position:bottom;
                  right:340px;
                  top:300px;
                  font-weight:normal;
    			  }
    button{
       border: none; padding: 12px;
       text-align: center;text-decoration: none;  display: inline-block;
        cursor: auto; float: right;
     
      
    }  
    .button1 {padding: 12px;border-radius: 100%;position: absolute;left: 1445px;top: 459px; background-image: -webkit-linear-gradient(#FF0000 40%,  Tomato 100%);
        background-image: linear-gradient(#FF0000 40%,  Tomato 100%);
       }		
    .button2 {padding: 12px;border-radius: 100%;position: absolute;left: 1212px;top: 785px; background-image: -webkit-linear-gradient(#FF0000 40%,  Tomato 100%);
        background-image: linear-gradient(#FF0000 40%,  Tomato 100%);
       } 	
    .button3 {padding: 12px;position: absolute;left: 1412px;top: 785px; border-radius: 100%; background-image: -webkit-linear-gradient(#FF0000 40%,  Tomato 100%);
        background-image: linear-gradient(#FF0000 40%,  Tomato 100%);
       } 	
.button4 {padding: 12px;border-radius: 100%;position: absolute;left: 140px;top: 78px; background-image: -webkit-linear-gradient(#FF0000 40%,  Tomato 100%);
    background-image: linear-gradient(#FF0000 40%,  Tomato 100%);
   } 	
image

1 Ответ

2 голосов
/ 16 января 2020

Я только обновил ваш JS и некоторые HTML.

Сделал код многоразовым. Повторно используемый код - это хороший код. Не создавайте функцию для каждой кнопки, когда вы можете использовать одну функцию для всего.

function showPopup(popupID) {
  var popups = document.querySelectorAll(".popuptext");

  for (var i = 0; i < popups.length; i++) {
    popups[i].classList.remove("show");
  }

  var popup = document.getElementById(popupID);
  popup.classList.add("show");
}
.popup {
  position: absolute;
  display: inline-block;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: auto;
}


/* POPUPS--------START------------------------------------------------------------------------------------------------------- */

.popup .popuptext {
  visibility: hidden;
  width: 27%;
  height: 93%;
  background-color: #fff;
  color: #004;
  text-align: left;
  border-radius: 0px;
  padding: 10px;
  position: fixed;
  top: 48%;
  left: 20%;
  transform: translate(-50%, -50%);
  margin-left: -80px;
  border-left: 75px solid white;
  overflow: auto;
  border-right: 10px solid white;
  border-bottom: 35px solid white;
  z-index: 10;
  border-top: 35px solid white;
  box-shadow: inset 0 0 0 rgba(255, 255, 255, 0.5), 2px 20px 2px rgba(0, 0, 0, 0.19);
}


/* POPUPS----------------END------------------------------------------------------------------------------------------ */


/* Toggle this class - hide and show the popup */

.popup .show {
  visibility: visible;
  -webkit-animation: fadeIn 1s;
  animation: fadeIn 1s;
  animation: move 1s;
}


/* Add animation (fade in the popup) */

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

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

@keyframes move {
  from {
    left: 0%;
  }
  to {
    top: 48%;
  }
}

@-webkit-keyframes move {
  from {
    left: 0%;
  }
  to {
    top: 48%;
  }
}


/* ------------------------------------------------popup hide and show end*/

body {
  font-family: "Trebuchet MS", Helvetica, sans-serif;
  font-size: 15px;
  color: #000;
  bgcolor="#fff" text-transform: uppercase;
  //overflow-x:hidden;
}

h1 {
  font-size: 80px;
  text-align: right;
  position: bottom;
  right: 340px;
  top: 300px;
  font-weight: normal;
}

button {
  border: none;
  padding: 12px;
  text-align: center;
  text-decoration: none;
  display: inline-block;
  cursor: auto;
  float: right;
}

.button1 {
  padding: 12px;
  border-radius: 100%;
  position: absolute;
  left: 1445px;
  top: 459px;
  background-image: -webkit-linear-gradient(#FF0000 40%, Tomato 100%);
  background-image: linear-gradient(#FF0000 40%, Tomato 100%);
}

.button2 {
  padding: 12px;
  border-radius: 100%;
  position: absolute;
  left: 1212px;
  top: 785px;
  background-image: -webkit-linear-gradient(#FF0000 40%, Tomato 100%);
  background-image: linear-gradient(#FF0000 40%, Tomato 100%);
}

.button3 {
  padding: 12px;
  position: absolute;
  left: 1412px;
  top: 785px;
  border-radius: 100%;
  background-image: -webkit-linear-gradient(#FF0000 40%, Tomato 100%);
  background-image: linear-gradient(#FF0000 40%, Tomato 100%);
}

.button4 {
  padding: 12px;
  border-radius: 100%;
  position: absolute;
  left: 140px;
  top: 78px;
  background-image: -webkit-linear-gradient(#FF0000 40%, Tomato 100%);
  background-image: linear-gradient(#FF0000 40%, Tomato 100%);
}
image
...