【问题标题】:How to show different <div> in one modal?如何在一个模态中显示不同的 <div>?
【发布时间】:2020-03-29 04:55:40
【问题描述】:

如何在一个模式中显示(切换)不同的 div?让我解释: - 当我点击“显示更多”时,我想触发模态(以及它在我的情况下的工作) - 接下来,我关闭它(它有效) - 我想再次触发模态但在不同的 div 和 offcourse 我希望这个 div 再次处于模态(现在这就是我卡住的地方)。

低于我的代码的 sn-p...

HTML:

<div id="modal" class="modal">
                    <div class="modal-content">
                        <span class="close-button">×</span>
                        <div id="wrapper" class="modified">
                        <!-- Main -->
                            <section>
                                <div class="inner">
                                    <h1 class="major">DJ ZA POROKE</h1>
                                    <p align="justify">some text</p>
                                    <p align="justify">some text</p>

                                </div>
                            </section>

                        </div>
                    </div>
                </div>

JS:

var modal = document.querySelector(".modal");
        var trigger1 = document.querySelector(".trigger1");
        var closeButton = document.querySelector(".close-button");

        function toggleModal() {
            modal.classList.toggle("show-modal");
        }

        function windowOnClick(event) {
            if (event.target === modal) {
                toggleModal();
            }
        }
        trigger1.addEventListener("click", toggleModal);
        closeButton.addEventListener("click", toggleModal);
        window.addEventListener("click", windowOnClick);

假设我像这样触发它:

<div class="middle">
<div class="text trigger"><a href="#modal">Show me more..</a></div>

感谢您的帮助。 问候。

【问题讨论】:

    标签: javascript html css modal-dialog


    【解决方案1】:

    所以要正确:

    • 用户点击一个按钮/其他元素(“显示更多”)和一个
    • 模态显示内容为 1
    • 模态关闭
    • 用户再次单击按钮/其他元素(“显示更多”)和
    • 模态显示内容为 2。
    • 模态关闭

    您有 2 个选项:

    • 调用两个不同的模态,除了内容相同 -> 这可以通过 JS 中的状态变量来完成

      var stateContent = 0;

    并检查我们处于哪个状态的按钮单击事件

    • 第二个更优雅的显示/隐藏相关的div

    添加了 HTML

    <div id="modal" class="modal">
                        <div  class="modal-content">
                            <span class="close-button">×</span>
                            <div id="wrapper" class="modified">
                            <!-- Main -->
                                <section>
                                    <div id="content_1" class="inner" style="display: block"> <!-- ID added This part is shown -->
                                        <h1 class="major">DJ ZA POROKE</h1>
                                        <p align="justify">some text</p>
                                        <p align="justify">some text</p>
                                    </div>
                                      <div id="content_2" class="inner" style="display: none"> <!-- ID added This part is hidden -->
                                        <h1 class="major">XY ZZ POROKE</h1>
                                        <p align="justify">some OTHER text</p>
                                        <p align="justify">some OTHER text</p>
                                    </div>
                                </section>
                            </div>
                        </div>                  
                    </div>
    

    在 javascript 中,您可以更改显示样式 - 为简化起见,我在关闭按钮上执行此操作

    closeButton.addEventListener("click", function(e){
        switchContent();
        toggleModal();
    });
    

    做我们想要的内容切换的新功能:

    function switchContent(){
        var content1 = document.getElementById("content_1");
        var content2 = document.getElementById("content_2");
        // Check in which state we are
        if (content1.style.display === 'none') {
            content1.style.display = 'block';
            content2.style.display = 'none';
            }
            else {
                content1.style.display = 'none'; 
                content2.style.display = 'block';       
            }
    }   
    

    【讨论】:

    • 感谢 relpay,但似乎问题出在其他地方,我无法在
      上触发模式
    【解决方案2】:

    我刚刚在 w3 打开了编辑器,所以我可以直接显示我想要的内容:

    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    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 {
      background-color: #fefefe;
      margin: auto;
      padding: 20px;
      border: 1px solid #888;
      width: 80%;
    }
    
    /* The Close Button */
    .close {
      color: #aaaaaa;
      float: right;
      font-size: 28px;
      font-weight: bold;
    }
    
    .close:hover,
    .close:focus {
      color: #000;
      text-decoration: none;
      cursor: pointer;
    }
    </style>
    </head>
    <body>
    
    <h2>Modal Example</h2>
    
    <!-- Trigger/Open The Modal -->
    <button id="myBtn">Open Modal</button>
    <button id="myBtn2">Open Modal2</button>
    <!-- The Modal -->
    <div id="myModal" class="modal">
      <!-- Modal content -->
      <div class="modal-content">
        <span class="close">&times;</span>
        <p>Some text in the Modal..1</p>
      </div>
    </div>
    
    <!-- The Modal -->
    <div id="myModal2" class="modal">
      <!-- Modal content -->
      <div class="modal-content">
        <span class="close">&times;</span>
        <p>Some text in the Modal..2</p>
      </div>
    </div>
    
    <script>
    // Get the modal
    var modal = document.getElementById("myModal");
    var modal2 = document.getElementById("myModal2");
    
    // Get the button that opens the modal
    var btn = document.getElementById("myBtn");
    var btn2 = document.getElementById("myBtn2");
    
    // 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";
    }
    btn2.onclick = function() {
      modal2.style.display = "block";
    }
    // When the user clicks on <span> (x), close the modal
    span.onclick = function() {
      modal.style.display = "none";
    }
    span.onclick = function() {
      modal2.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";
      }
      if (event.target == modal2) {
        modal.style.display = "none";
      }
    }
    </script>
    
    </body>
    </html>
    
    

    所以你看到出了点问题,因为当我单击 OPENMODAL2 时它会冻结。但无论如何,我希望在 1 个模态中显示 8 个不同的 div。

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签