简体   繁体   English

如何获取选定的表行并在jquery/javascript中重写单元格html

[英]How to get the selected table row and rewrite the cells html in jquery/javascript

My bootstrap table is as follows... The table content and buttons are generated by php code but for the sake of simplicity, I will put the HTML only version:我的 bootstrap 表如下...表内容和按钮由 php 代码生成,但为了简单起见,我将仅使用 HTML 版本:

<table id="usertable" class="table table-striped">
                <thead class="bg-light">
                    <tr>
                        <th>Username</th>
                        <th>First Name</a></th>
                        <th>Last Name</th>
                        <th>Phone</th>
                        <th>Role ID</th>
                        <th></th>
                    </tr>
                </thead>
                <tbody id="usertable1">
                    <tr>
                        <td>Josh96</td>
                        <td>Josh</td>
                        <td>Martin</td>
                        <td>613-737-0551</td>
                        <td>3</td>
                        <td name="buttons">
                            <div class="btn-group pull-right">
                                <button id="buttonEdit" type="button" class="btn btn-sm btn-default" onclick="editRow(this);" style="">
                                    <i class="fs-6 bi-pencil-fill"></i>
                                </button>
                                <button id="buttonDelete" type="button" class="btn btn-sm btn-default" onclick="deleteRow(this);" style="">
                                    <i class="fs-6 bi-trash3-fill" aria-hidden="true"></i>
                                </button>
                                <button id="buttonSave" type="button" class="btn btn-sm btn-default" style="display: none;" onclick="saveChanges(this);">
                                    <i class="fs-6 bi-check-circle-fill"></i>
                                </button>
                                <button id="buttonCancel" type="button" class="btn btn-sm btn-default" style="display: none;" onclick="Cancel();">
                                    <i class="fs-6 bi-x-circle-fill" aria-hidden="true"></i>
                                </button>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>

I am trying to change the html of a row's cells with JavaScript or jquery. For example, after clicking on the edit button, I want我正在尝试将一行单元格的 html 更改为 JavaScript 或 jquery。例如,单击编辑按钮后,我想要

<td>Josh96</td>
<td>Josh</td>
<td>Martin</td>
<td>613-737-0551</td>
<td>3</td>

to become成为

<td><input class= "form-control input-sm edit" id="username_Josh96" value ="Josh96"></input></td>
<td><input class= "form-control input-sm edit" id="firstname_Josh96" value ="Josh"></input></td>
<td><input class= "form-control input-sm edit" id="lastname_Josh96" value ="Martin"></input></td>
<td><input class= "form-control input-sm edit" id="Phone_Josh96" value ="613-737-0551"></input></td>
<td><input class= "form-control input-sm edit" id="RoleID_Josh96" value ="3"></input></td>

My javascript is as follows:我的javascript如下:

function editRow(r){
  var $row = $(r).parents('tr'); 
  var $cols = $row.find('td');
 //found out how get the current row content but haven't yet figured out how to change the html 
  console.log("current table row content: "+ $cols.text());
}

I know that I have to first Identify the row index, then extract the values of each cells, I'd put them in an array.我知道我必须首先确定行索引,然后提取每个单元格的值,我将它们放在一个数组中。 I'd store the username in a variable in order to create my desired ids for each tds in the row and finally rewrite the html to have inputs.我会将用户名存储在一个变量中,以便为行中的每个 tds 创建我想要的 ID,最后重写 html 以获得输入。 Being new in javascript, I haven't been able to figure it out yet javascript新来的,还没弄明白

 function editRow(r) { var $row = $(r).parents('tr'); var username = $row.find('td').eq(0).text(); var firstname = $row.find('td').eq(1).text(); var lastname = $row.find('td').eq(2).text(); var phone = $row.find('td').eq(3).text(); var roleId = $row.find('td').eq(4).text(); let newTr = '<td><input class= "form-control input-sm edit" id="username_' + username + '" value ="' + username + '"></input></td><td><input class= "form-control input-sm edit" id="firstname_' + username + '" value ="' + firstname + '"></input></td><td><input class= "form-control input-sm edit" id="lastname_' + username + '" value ="' + lastname + '"></input></td><td><input class= "form-control input-sm edit" id="Phone_' + username + '" value ="' + phone + '"></input></td><td><input class= "form-control input-sm edit" id="RoleID_' + username + '" value ="' + roleId + '"></input></td>'; $row.html(newTr); }
 <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <table id="usertable" class="table table-striped"> <thead class="bg-light"> <tr> <th>Username</th> <th>First Name</a></th> <th>Last Name</th> <th>Phone</th> <th>Role ID</th> <th></th> </tr> </thead> <tbody id="usertable1"> <tr> <td>Josh96</td> <td>Josh</td> <td>Martin</td> <td>613-737-0551</td> <td>3</td> <td name="buttons"> <div class="btn-group pull-right"> <button id="buttonEdit" type="button" class="btn btn-sm btn-default" onclick="editRow(this);" style="">E <i class="fs-6 bi-pencil-fill"></i> </button> <button id="buttonDelete" type="button" class="btn btn-sm btn-default" onclick="deleteRow(this);" style="">D <i class="fs-6 bi-trash3-fill" aria-hidden="true"></i> </button> <button id="buttonSave" type="button" class="btn btn-sm btn-default" style="display: none;" onclick="saveChanges(this);"> <i class="fs-6 bi-check-circle-fill"></i> </button> <button id="buttonCancel" type="button" class="btn btn-sm btn-default" style="display: none;" onclick="Cancel();"> <i class="fs-6 bi-x-circle-fill" aria-hidden="true"></i> </button> </div> </td> </tr> </tbody> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM