簡體   English   中英

莫代爾在外面單擊時不會隱藏

[英]Modal doesn't hide when outside click it

我創建了一個模態,它可以正常工作,但在外部單擊時不再隱藏。 我怎樣才能做到這一點? 請幫助我任何人。 謝謝

 // 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 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"; } } 
 <button type="button" id="myBtn" class=" postsubmit-btn">Post</button> <div id="myModal" class="modal"> <div class="modal-content "> </div> </div> 

請參考此代碼以在模態外部單擊時關閉模態。

span標簽中有錯誤,因為span在您的html代碼中不可用。

 // Get the modal var modal = document.getElementById('myModal'); // Get the button that opens the modal var btn = document.getElementById("myBtn"); // When the user clicks the button, open the modal btn.onclick = function() { modal.style.display = "block"; } // When the user clicks anywhere outside of the modal, close it window.onclick = function(event) { if (event.target == modal) { modal.style.display = "none"; } } 
 body {font-family: Arial, Helvetica, sans-serif;} /* The Modal (background) */ .modal { display: none; /* Hidden by default */ position: fixed; /* Stay in place */ z-index: 1; /* Sit on top */ padding-top: 100px; /* Location of the box */ 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 */ .modal-content { position: relative; background-color: #fefefe; margin: auto; padding: 0; border: 1px solid #888; width: 80%; box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19); -webkit-animation-name: animatetop; -webkit-animation-duration: 0.4s; animation-name: animatetop; animation-duration: 0.4s } 
 <button id="myBtn">Post</button> <!-- The Modal --> <div id="myModal" class="modal"> <!-- Modal content --> <div class="modal-content"> <h2>Modal</h2> </div> </div> 

您可以使用stopPropagation()方法打開和關閉模型,

請在下面的更新代碼中查看,希望對您有所幫助。

 <button type="button" id="myBtn" class=" postsubmit-btn">Post</button> <div id="myModal" class="modal"> <div class="modal-content "> </div> <button class="close">Close</button> </div> <style> .modal{width:300px; height:300px; background:#f5f5f5; display:none;} .close{float:right} </style> <script> // 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 the button, open the modal btn.onclick = function(event) { event.stopPropagation(); 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"; } } </script> 

您可以使用Element.contains(event.target)來檢查單擊是否在元素或其子元素之一上。 您還可以使用event.target!="myBtn"來確保單擊按鈕可以打開模式。

 .modal{ width: 50%; height: 50%; position: fixed; top: 25%; left: 25%; border: 1px solid black; background-color: dodgerblue; } 
 <button type="button" id="myBtn" class=" postsubmit-btn">Post</button><button class="close">&times;</button> <div id="myModal" class="modal" style="display: block;"> <div class="modal-content"> MODAL </div> </div> <script> // 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 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.id!="myBtn"&&!modal.contains(event.target)) { modal.style.display = "none"; } } </script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM