使用PHP和JavaScript打开NonBootstrap模态以更新/编辑表中的行

时间:2018-12-09 01:47:21

标签: javascript php

我只是PHP和JavaScript的新手,所以我在w3schools中使用了示例代码并尝试对其进行改进。我对模态有这个问题。单击时我的模式没有打开。第一行上只有我的编辑按钮有效,其余的无效。这是我的代码,用于填充数据库中的数据:

    <table>
<tbody>
                <?php
                require 'connection.php';
                $query = "SELECT first,middle,last,rfidnum,section FROM `members`";
                $result1 = mysqli_query($con, $query);?>


                    <?php while($row1 = mysqli_fetch_array($result1)):;?>
                <tr class="mems">
                    <td>
                        <?php echo $row1[0]; ?>
                    </td>
                    <td>
                        <?php echo $row1[1]; ?>
                    </td>
                    <td>
                        <?php echo $row1[2]; ?>
                    </td>
                    <td>
                        <?php echo $row1[3]; ?>
                    </td>
                    <td>
                        <?php echo $row1[4]; ?>
                    </td>
                    <td>
                        <button id='edit'>Edit</button>
                    </td>
                </tr>
                        <?php endwhile;?>


            </tbody>
</table>

<!-m2content->
        <div id="myModal2" class="modal2">   
  <div class="modal2-content bounceInDown animated">
    <span class="close2">&times;</span>
    <table>
            <thead><th>Add Member</th></thead>
        <tbody>

            <tr>
                <td></td>
                <td>
            <form method="post">
                <table>
            <tr><td>First Name</td>
            <td><input class="textboxx" type="text" name="first" onkeypress=" return forinput()" ></td></tr>
            <tr><td>Middle Name</td>
            <td><input class="textboxx" type="text" name="middle" onkeypress=" return forinput()" ></td></tr>
            <tr><td>Last Name </td>
            <td><input class="textboxx" type="text" name="last" onkeypress=" return forinput()" ></td></tr>
            <tr><td>ID Number: </td>
            <td><input class="textboxx" type="text" name="idnumber" onkeypress=" return forinput()" ></td></tr>
            <tr><td>Section: <br>
            <td><input class="textboxx" type="text" name="section" onkeypress=" return forinput()"> </td></tr>
            <tr><td><input type="submit"></td></tr>
            </table>
            </form>
                </td>
        </tr>
        </tbody>
        </table>

  </div>

这是我的Java脚本:

// Get the modal
var modal2 = document.getElementById('myModal2');

// Get the button that opens the modal
var btn2 = document.getElementById("edit");
// Get the <span> element that closes the modal
var span2 = document.getElementsByClassName("close2")[0];
// When the user clicks the button, open the modal 
btn2.onclick = function() {
    modal2.style.display = "block";
}
// When the user clicks on <span> (x), close the modal
span2.onclick = function() {
    modal2.style.display = "none";
}



window.onclick = function(event) {

    if (event.target === modal2) {
        modal2.style.display = "none";
    }
}

感谢您的回复。 由于教授的缘故,我没有使用Bootstrap。他们告诉我们不要使用预定义的代码。这就是为什么直到现在我仍然坚持这个问题。

1 个答案:

答案 0 :(得分:1)

首先,首先,您需要对“编辑”按钮的ID进行操作。 HTML不能包含具有相同ID的多个元素。 Can a HTML element have multiple unique ID attributes?

假设您有一个循环,将自动生成编辑按钮的ID,并使每行的ID保持唯一。

<table>
    <tbody>
    <?php
        for ($i = 0; $i < 3; $i++){
            ?>
            <tr class="mems">
                <td>
                    <button id='edit_<?php echo $i; ?>'>Edit</button>
                </td>
            </tr>
            <?php
        }
    ?>
    </tbody>
</table>

由于按钮具有不同的ID,因此按ID创建事件侦听器没有任何意义,而是可以使用类选择器或将事件直接附加到按钮本身。

将onclick事件连接到每个按钮的示例:

<button id='edit_<?php echo $i; ?>' onclick="openModal(event);">Edit</button>

使用类选择器的示例:

<button id='edit_<?php echo $i; ?>' class='editButton'>Edit</button>

尝试以下工作示例:

<table>
    <tbody>
    <?php
        for ($i = 0; $i < 3; $i++){
            ?>
            <tr class="mems">
                <td>
                    <button id='edit_<?php echo $i; ?>' onclick="openModal(event);" class="editButton">Edit</button>
                </td>
            </tr>
            <?php
        }
    ?>
    </tbody>
</table>


<script type="text/javascript">
    for (var i = 0; i < document.getElementsByClassName('editButton').length; i++){
        var editButton = document.getElementsByClassName('editButton')[i];
        editButton.addEventListener("click", onclickByClass);
    }
    function openModal(e){
        // modal2.style.display = "block";
        alert("Click event listener from onclick attribute");
    }

    function onclickByClass(e){
        // modal2.style.display = "block";
        alert("Event listener by Class Name");
    }
</script>