三个按钮显示相同的内容。如何?

时间:2019-05-18 14:13:17

标签: javascript html css

我有三个按钮(单击时,模态显示)内部有不同的内容(每个按钮都有自己的内容,并且与其他按钮不同),现在无论我单击哪个按钮,它都显示相同的内容从我添加的最后一个按钮开始。谁能解释我该如何解决?

我需要在星期一之前完成此操作,因此不胜感激。

<div class="popup1">
    <style>

    /* 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: 30%;
    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
    }

    /* Add Animation */
    @-webkit-keyframes animatetop {
    from {top:-300px; opacity:0} 
    to {top:0; opacity:1}
    }

    @keyframes animatetop {
    from {top:-300px; opacity:0}
    to {top:0; opacity:1}
    }

    /* The Close Button */
    .close {
    color: white;
    float: right;
    font-size: 28px;
    font-weight: bold;
    }

    .close:hover,
    .close:focus {
    color: #000;
    text-decoration: none;
    cursor: pointer;
    }

    .modal-header {
    padding: 2px 16px;
    background-color: #5ca6b8;
    color: white;
    }

    .modal-body {padding: 2px 16px;}

    .modal-footer {
    padding: 2px 16px;
    background-color: #5cb85c;
    color: white;
    }
    </style>

    <!-- Trigger/Open The Modal -->
    <button id="myBtn">Sponsors</button>

    <!-- The Modal -->
    <div id="myModal" class="modal">

    <!-- Modal content -->
    <div class="modal-content">
        <div class="modal-header">
        <span class="close">&times;</span>
        <h2>Our Sponsors</h2>
        </div>
        <div class="modal-body">
        <ul>
            <li>MONG</li>
            <li>SCNG</li>
            <li>Feel Slovenia</li>
        </ul>
        </div>
    </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 == modal) {
        modal.style.display = "none";
    }
    }
    </script>
</div>

<div class="popup2">
        <style>

        /* The Modal (background) */
        .modal2 {
        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-content2 {
        position: relative;
        background-color: #fefefe;
        margin: auto;
        padding: 0;
        border: 1px solid #888;
        width: 30%;
        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
        }

        /* Add Animation */
        @-webkit-keyframes animatetop {
        from {top:-300px; opacity:0} 
        to {top:0; opacity:1}
        }

        @keyframes animatetop {
        from {top:-300px; opacity:0}
        to {top:0; opacity:1}
        }

        /* The Close Button */
        .close2 {
        color: white;
        float: right;
        font-size: 28px;
        font-weight: bold;
        }

        .close2:hover,
        .close2:focus {
        color: #000;
        text-decoration: none;
        cursor: pointer;
        }

        .modal-header2 {
        padding: 2px 16px;
        background-color: #5ca6b8;
        color: white;
        }

        .modal-body2 {padding: 2px 16px;}

        .modal-footer2 {
        padding: 2px 16px;
        background-color: #5cb85c;
        color: white;
        }
        </style>

        <!-- Trigger/Open The Modal -->
        <button id="myBtn2">My Gear</button>

        <!-- The Modal -->
        <div id="myModal2" class="modal2">

        <!-- Modal content -->
        <div class="modal-content2">
            <div class="modal-header2">
            <span class="close2">&times;</span>
            <h2>My gear</h2>
            </div>
            <div class="modal-body2">
            <ul>
                <li>Nikon D3100</li>
                <li>Sigma 10-20mm f/4</li>
                <li>Nikkor 70-300mm f4-5.6</li>
                <li>Nikkor 18-55mm f/3.5</li>
            </ul>
            </div>
        </div>

        </div>

        <script>
        // Get the modal
        var modal = document.getElementById("myModal2");

        // Get the button that opens the modal
        var btn = document.getElementById("myBtn2");

        // Get the <span> element that closes the modal
        var span = document.getElementsByClassName("close2")[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";
        }
        }
        </script>
</div>

<div class="popup3">
        <style>

        /* The Modal (background) */
        .modal3 {
        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-content3 {
        position: relative;
        background-color: #fefefe;
        margin: auto;
        padding: 0;
        border: 1px solid #888;
        width: 30%;
        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
        }

        /* Add Animation */
        @-webkit-keyframes animatetop {
        from {top:-300px; opacity:0} 
        to {top:0; opacity:1}
        }

        @keyframes animatetop {
        from {top:-300px; opacity:0}
        to {top:0; opacity:1}
        }

        /* The Close Button */
        .close3 {
        color: white;
        float: right;
        font-size: 28px;
        font-weight: bold;
        }

        .close3:hover,
        .close3:focus {
        color: #000;
        text-decoration: none;
        cursor: pointer;
        }

        .modal-header3 {
        padding: 2px 16px;
        background-color: #5ca6b8;
        color: white;
        }

        .modal-body3 {padding: 2px 16px;}

        .modal-footer3 {
        padding: 2px 16px;
        background-color: #5cb85c;
        color: white;
        }
        </style>

        <!-- Trigger/Open The Modal -->
        <button id="myBtn3">My Hobbies</button>

        <!-- The Modal -->
        <div id="myModal3" class="modal3">

        <!-- Modal content -->
        <div class="modal-content3">
            <div class="modal-header3">
            <span class="close3">&times;</span>
            <h2>My hobbies</h2>
            </div>
            <div class="modal-body3">
            <ul>
                <li>Photography</li>
                <li>Videography</li>
                <li>Traveling</li>
                <li>Racing</li>
            </ul>
            </div>
        </div>

        </div>

        <script>
        // Get the modal
        var modal = document.getElementById("myModal3");

        // Get the button that opens the modal
        var btn = document.getElementById("myBtn3");

        // Get the <span> element that closes the modal
        var span = document.getElementsByClassName("close3")[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";
        }
        }
        </script>
</div>

1 个答案:

答案 0 :(得分:1)

所有三个变量都使用相同的变量modal。所以这个:

var modal = document.getElementById("myModal");

被此内容覆盖

var modal = document.getElementById("myModal2");

被此内容覆盖

var modal = document.getElementById("myModal3");

在发生点击回调时,modal仅指第3个,因此这就是您最终显示的第3个。

它们在不同的脚本标签中的事实并不能隔离它们。您是在脚本的顶层声明这些变量(例如在函数中),因此它们是全局变量。