У меня есть вкладка Bootstrap и таблица внутри вкладки и в таблице, строка с полями ввода. Проблема, с которой я сталкиваюсь, заключается в том, что когда у меня есть несколько строк в таблице, извлекаются только значения первой строки. Я использую «шкаф» и «найти», но не получаю желаемых значений. Что я делаю неправильно?
<ul class = "nav nav-tabs nav-justified itemTab">
<li><a href = "#tab5" data-toggle = "tab">Inbox</a></li>
<li><a href = "#tab6" data-toggle = "tab">Outbox</a></li>
</ul>
<div class = "tab-content itemTab">
<div class = "tab-pane fade in" id = "tab5">
<table class = "table table-condensed" id = "utable">
<th>Location</th>
<th>Department</th>
<th>HD Number</th>
@foreach (var item in Model.items)
{
<tr class = "@item.Id">
<div class = "accordian-body collapse in" id = "@item.Id">
<input type = "text" class = "form-control" id = "loc">
<input type = "text" class = "form-control" id = "dept">
<input type = "text" class = "form-control" id = "hdnum">
</div>
<div class = "row">
<div align = "center">
<input type = "submit" value = "Transfer" class = "btn btn-success" onclick = "MoveItem(@item.Id)" id = "moveButton" data-url = "@Url.Action("Submit", "Item")" />
</div>
</div>
</tr>
}
</table>
</div>
<div class = "tab-pane fade in" id = "tab6">
@Html.Action("Outbox", "Item")
</div>
function MoveItem(id) {
var row = $('#' + id).closest('.itemTab');
var loc = $(row).find('#loc').val();
var dept = $(row).find('#dept').val();
var hdnum = $(row).find('#hdnum').val();
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, заключите значение id в кавычки при генерации параметра для вызова MoveItem:
onclick = "MoveItem('@item.Id')"
Во-вторых, измените повторяющиеся идентификаторы на классы и поднимитесь только до родительского tr:
<input type = "text" class = "form-control" class = "loc">
function MoveItem(id) {
var row = $('#' + id).closest('tr');
var loc = $(row).find('.loc').val();
}
Здесь нет повторяющихся идентификаторов, они основаны на модели (нет указаний на то, что это фактические значения), поэтому их не нужно удалять.
Ваш самый близкий
var row = $('#' + id).closest('.itemTab');
получает вкладку - но все «строки» находятся на этой вкладке.
Вместо этого получите "строку"
var row = $('#' + id).closest('tr');
тогда находки найдут предмет в соответствующей строке.
во-первых, у вас не может быть <div /> в качестве дочернего элемента <tr />