Javascript 在表中的特定位置插入行
我有一个带有表格的页面,第一行来自下面的代码Javascript 在表中的特定位置插入行,javascript,Javascript,我有一个带有表格的页面,第一行来自下面的代码 <tbody id="addRow"> <tr> <td align="right" id="firstNameLabel">First Name:</td> <td align="left">@Html.TextBoxFor(model =>
<tbody id="addRow">
<tr>
<td align="right" id="firstNameLabel">First Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].firstName, new { id = "firstName" })</td>
<td align="right" id="middleInitialLabel">Middle Initial:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].middleInitial, new { id = "middleInitial" })</td>
<td align="right" id="lastNameLabel">Last Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].lastName, new { id = "lastName" })</td>
<td><input type="button" class="btn btn-xs" onclick="addRow('0')" value="Add" id="addButton0" /></td>
</tr>
名字:
@Html.TextBoxFor(model=>model.personArray[0].firstName,新的{id=“firstName”})
中间字首:
@Html.TextBoxFor(model=>model.personArray[0].middleInitial,新的{id=“middleInitial”})
姓氏:
@Html.TextBoxFor(model=>model.personArray[0].lastName,新的{id=“lastName”})
单击“添加”按钮时,将插入新行。但是,该行插入到表的底部。如何将该行紧跟在第一行之后
Javascript:
function addRow(index) {
$('#addButton' + index).attr("disabled", true);
var counter = ++index;
var content = `<tr><td align="right">First Name:</td>
<td align="left"><input id="personArray_${counter}__firstName" name="personArray[${counter}].firstName" type="text" value=""></td>
<td align="right">Middle Initial:</td>
<td align="left"><input id="middleInitial" name="personArray[${counter}].middleInitial" type="text" value=""></td>
<td align="right">Last Name:</td>
<td align="left"><input id="lastName" name="personArray[${counter}].lastName" type="text" value=""></td>
<td><input type="button" class="btn btn-xs valid" id="addButton${counter}" onclick="addRow('${counter}')" value="Add" aria-invalid="false"></td></tr>`;
$('#addRow').append(content);
};
函数addRow(索引){
$('#addButton'+index).attr(“已禁用”,true);
var计数器=++指数;
var content=`名字:
中间字首:
姓氏:
`;
$('#addRow')。追加(内容);
};
这是一个普通的JS解决方案。可以使用来指示新内容相对于特定元素的位置
我在tbody
中选择了第一个tr
,并将新内容放在该行的末尾
document.querySelector('#addRow > tr')
.insertAdjacentHTML("afterend", content);
使用:
回答您提出的问题:您在
$(“#addRow tr:first”)上使用:
但是,正确的方法是将表拆分为一个(可能是包含而不是td
元素的行)和tbody
:
<thead>
<tr>
<td align="right" id="firstNameLabel">First Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].firstName, new { id = "firstName" })</td>
<td align="right" id="middleInitialLabel">Middle Initial:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].middleInitial, new { id = "middleInitial" })</td>
<td align="right" id="lastNameLabel">Last Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].lastName, new { id = "lastName" })</td>
<td><input type="button" class="btn btn-xs" onclick="addRow('0')" value="Add" id="addButton0" /></td>
</tr>
</thead>
<tbody id="addRow">
请尝试以下代码:
function addRow(index) {
$('#addButton' + index).attr("disabled", true);
var counter = ++index;
var content = `<tr><td align="right">First Name:</td>
<td align="left"><input id="personArray_${counter}__firstName" name="personArray[${counter}].firstName" type="text" value=""></td>
<td align="right">Middle Initial:</td>
<td align="left"><input id="middleInitial" name="personArray[${counter}].middleInitial" type="text" value=""></td>
<td align="right">Last Name:</td>
<td align="left"><input id="lastName" name="personArray[${counter}].lastName" type="text" value=""></td>
<td><input type="button" class="btn btn-xs valid" id="addButton${counter}" onclick="addRow('${counter}')" value="Add" aria-invalid="false"></td></tr>`;
//$('#addRow').append(content);
$(content).insertAfter($("#addRow > tr").eq(index-1)); // Key line
函数addRow(索引){
$('#addButton'+index).attr(“已禁用”,true);
var计数器=++指数;
var content=`名字:
中间字首:
姓氏:
`;
//$('#addRow')。追加(内容);
$(content).insertAfter($(“#addRow>tr”).eq(index-1));//键行
}) thead
绝对是一条全面的道路。
<thead>
<tr>
<td align="right" id="firstNameLabel">First Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].firstName, new { id = "firstName" })</td>
<td align="right" id="middleInitialLabel">Middle Initial:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].middleInitial, new { id = "middleInitial" })</td>
<td align="right" id="lastNameLabel">Last Name:</td>
<td align="left">@Html.TextBoxFor(model => model.personArray[0].lastName, new { id = "lastName" })</td>
<td><input type="button" class="btn btn-xs" onclick="addRow('0')" value="Add" id="addButton0" /></td>
</tr>
</thead>
<tbody id="addRow">
$('#addRow').prepend(content);
function addRow(index) {
$('#addButton' + index).attr("disabled", true);
var counter = ++index;
var content = `<tr><td align="right">First Name:</td>
<td align="left"><input id="personArray_${counter}__firstName" name="personArray[${counter}].firstName" type="text" value=""></td>
<td align="right">Middle Initial:</td>
<td align="left"><input id="middleInitial" name="personArray[${counter}].middleInitial" type="text" value=""></td>
<td align="right">Last Name:</td>
<td align="left"><input id="lastName" name="personArray[${counter}].lastName" type="text" value=""></td>
<td><input type="button" class="btn btn-xs valid" id="addButton${counter}" onclick="addRow('${counter}')" value="Add" aria-invalid="false"></td></tr>`;
//$('#addRow').append(content);
$(content).insertAfter($("#addRow > tr").eq(index-1)); // Key line