я использую laravel и javascript, и количество строк не считывает следующие переменные после первых переменных. то, что я пытаюсь сделать, это отправить несколько IP-адресов, и когда я проверяю его с помощью dd, он получает только первую переменную, а в «оповещении (rowCount); он возвращает ноль». пожалуйста помогите с этим спасибо..
это лезвие.php
</div>
<div class = "row">
<div class = "col-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 ">
<h5 class = "text-truncate col-10 mt-3"> <span class = "fas fa-list-ol icons"></span> <b>Server Description</b></h5>
<hr class = "col-11 col-xs-11 col-sm-11"></hr>
<div class = "tbl_div row col-11 col-xs-11 col-sm-11 ">
<div class = "row col-2 col-xs-2 col-sm-2 col-md-3">
<a href = "#" class = "p-2" id = "addrow"><span class = "fas fa-plus"></span> ADD Source / Destination</a>
</div>
<table class = "table table-hover table-responsive table-fw-widget " id = "tblItems" >
<thead class = "">
<td class = "col-md-1 text-center border-0">
<td class = "col-md-3 col-3 col-xs-3 col-sm-3 border-0">Source Servername</td>
<td class = "col-md-3 col-3 col-xs-3 col-sm-3 border-0">IP address</td>
<td class = "col-md-3 col-3 col-xs-3 col-sm-3 border-0">Destination Servername</td>
<td class = "col-md-3 col-3 col-xs-3 col-sm-3 border-0">IP address</td>
</thead>
<tbody>
<!-- @foreach(old('source_name', ['value']) as $fw_ip) -->
<tr>
<td class = "col-md-1 text-center">
<label class = "form-label" id = "row_no"><b>#1</b></label></td>
<td class = "col-md-3">
<!-- <label class = "form-label">Item</label> -->
<input type = "text" name = "source_namex[]" class = "form-control">
</td>
<td class = "col-md-3">
<!-- <label class = "form-label">Item</label> -->
<input type = "text" class = "form-control text-center" name = "sourceip[]" maxlength = "15" value = "{{ old('sourceip.'.$loop->index) }}" placeholder = "xxx.xxx.xxx.xxx" pattern = "^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$">
</td>
<td class = "col-md-3">
<!-- <label class = "form-label">Item</label> -->
<input type = "text" name = "destname[]" class = "form-control" value = "{{ old('destname.'.$loop->index) }}">
</td>
<td class = "col-md-4">
<!-- <label class = "form-label">Item</label> -->
<input type = "text" class = "form-control text-center" name = "destip[]" maxlength = "15" value = "{{ old('destip.'.$loop->index) }}" placeholder = "xxx.xxx.xxx.xxx" pattern = "^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$">
</td>
<td class = "col-md-3">
<center><span class = "fas fa-trash-alt fa-lg mt-2 icons removerow"></span></center>
</td>
</tr>
<!-- @endforeach -->
</tbody>
</table>
</div>
<div class = "row">
<div class = "col-6 col-xs-6 col-sm-6 col-md-3 col-lg-3 col-xl-2 ">
<div class = "form-group">
<button type = "submit" class = "btn btn-allcard btn-block col-10">Submit</button>
</div>
</div>
</div>
</div>
</div>
</div>
javascipt
<script type = "text/javascript">
var rowCount = $("#tblItems tbody>td").length;
var rowCount = ;
alert(rowCount);
$('.type').change(function()
{
});
$('#addrow').click(function()
{
rowCount += 1;
$("#tblItems tbody>tr:first").clone(true).insertAfter("#tblItems tbody>tr:last");
$("#tblItems tbody>tr:last").attr("id", "tr"+rowCount);
$("#tblItems tbody>tr:last #row_no").text("#"+rowCount);
$("#tblItems tbody>tr:last #row_no").css('font-weight','bold');
$("#tblItems tbody>tr:last :input").val("");
});
$('.removerow').click(function()
{
var id = $(this).closest('tr').attr('id')
$('table#tblItems tr#'+id).remove();
rowCount -=1;
});
</script>
я пытался начать счет строк с 1. это должно быть 1



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


Проблема связана с вашим селектором CSS, в частности с > в #tblItems tbody>td".
От MDN:
Дочерний комбинатор (>) помещается между двумя селекторами CSS. Он соответствует только тем элементам, которые соответствуют второму селектору и являются прямыми дочерними элементами элементов, соответствующих первому.
(выделено мной)
Это означает, что вы указываете jQuery возвращать все элементы <td>, которые являются прямыми дочерними элементами <tbody> в таблице с идентификатором #tblItems. Но таких прямых потомков нет, потому что все элементы <td> являются потомками <tr>.
Ваш селектор должен либо включать дочерний элемент <tr>, например:
$("#tblItems tbody>tr>td")
Или вообще обойтись без дочернего комбинатора (>):
$("#tblItems tbody td")
Обновлять
Я ошибочно предположил, что нужно было количество <td> элементов, потому что td был в селекторе. Я должен был уделить больше внимания тому факту, что используемое имя переменной называется «rowCount». Как указано @Win в комментариях, для выбора элементов <tr> селектор будет:
$("#tblItems tbody > tr")
Использование дочернего комбинатора (>) в этом случае допустимо, потому что все нужные нам элементы <tr> будут прямыми потомками <tbody>. Но важно понимать, что он будет работать одинаково хорошо и без >, если в <tr> нет вложенных <tbody>.
я пробую оба из них, но предупреждение (rowCount) возвращает 6
@Teris2 Teris2, если вы хотите подсчитать, сколько строк внутри tbody, попробуйте снова решение, описанное выше, но на этот раз посчитайте только TR ... $("#tblItems tbody tr").length;
@ Teris2: Извините, я неправильно понял, какой счет вы использовали. Я добавил обновление к своему ответу.
я хочу установить количество строк равным 1 без использования rowCount = 1;
@Teris2: Понятно. Опубликованный мной обновленный селектор — $("#tblItems tbody > tr") — вернет количество элементов <tr>, которые являются прямыми дочерними элементами <tbody>. Пока у вас есть один <tr>, это число будет 1. Вот пример: jsfiddle.net/76484/fqkrwoca
Что это
var rowCount = ;там делает?