Ich möchte in der Lage sein, ein bestimmtes Div anzeigen und ausblenden, wenn Sie auf einen Link klicken, aber mein Code funktioniert nur, wenn ich eine Schaltfläche verwenden. Warum passiert das und wie kann ich es reparieren?Toggle ausblenden/show div funktioniert auf Knopf, aber nicht auf Link?
Hier ist mein Code:
.popup {
position: relative;
display: inline-block;
}
.popup-content {
display: none;
position: absolute;
\t width: 1000px;
}
.show {
display:block;
}
<div class="popup">
<button onclick="showPopup()" class="btnPopup thePopup">POPUP FROM BUTTON</button>
<a class="linkStyle thePopup" onclick="javascript:showPopup()" href="#" return false;>POPUP FROM LINK</a>
<div id="myPopup" class="popup-content" style="border:1px; border-style:solid; margin:10px; padding: 10px;width:200px;">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptatibus quasi voluptas impedit. Culpa impedit?
</div>
</div>
<script>
/* When the user clicks on the button,
toggle between hiding and showing the dropdown content */
function showPopup() {
event.preventDefault();
document.getElementById("myPopup").classList.toggle("show");
return false;
}
// Close the dropdown if the user clicks outside of it
window.onclick = function(event) {
if (!event.target.matches('.thePopup')) {
var dropdowns = document.getElementsByClassName("popup-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
</script>
Auch hier ist es ein Link für codepen ist: http://codepen.io/ZlatinaNyagolova/pen/LkOgzk
UPDATE:
ich eine andere Klasse hinzugefügt der Knopf und der Link und benutzte diese Klasse im Listener in meiner Closing-Funktion. Das hat es behoben! :)
Ja, das war der Fall! Ich habe gerade diese Validierung hinzugefügt und es hat funktioniert: 'if (! Event.target.matches ('. BtnPopup') &&! Event.target.matches ('. LinkStyle'))' Danke! – Nyagolova
Gern geschehen! Dachte darüber nach, die Validierung auch zu erweitern. Hängt davon ab, was du machen willst. Wenn es mehrere Möglichkeiten gibt, das Popup zu öffnen (d. H. Viele verschiedene Klassen, nach denen gesucht werden soll), würde ich eine dedizierte Klasse dafür hinzufügen. Die if-Anweisung könnte sonst sehr lang und wirklich verwirrend werden. – Holger
Okay, ich werde darüber nachdenken. Das war eine sehr schöne Erklärung und Lösung - ich habe es benutzt und meine Antwort aktualisiert. Danke noch einmal. :) – Nyagolova