Я создаю скрипт для динамического добавления строки. Я использую для этого функцию ниже. Однако проблема состоит в том, что она создает новую строку, но не присваивает уникальные идентификаторы элементам.Установка уникальных идентификаторов элементов формы при динамическом создании
Javascript:
$(document).ready(function() {
var counter = 1;
$("#add_row").click(function() {
var row_id = "row" + counter;
console.log(row_id);
new_elem = $("#new_row").clone().appendTo("#table_invoice tbody").show().attr("id", row_id);
var button_id = "button" + row_id;
var input_id = "row" + row_id;
document.getElementById('row_id').firstChild.setAttribute('id',input_id);
document.getElementById('row_id').firstChild.nextSibling.setAttribute('id',button_id);
console.log(button_id);
console.log(input_id);
counter += 1;
});
});
HTML:
<table class="table table-striped" id="table_invoice">
<thead>
<tr>
<th>Product ID</th>
<th>Product Name</th>
<th>Product Price</th>
</tr>
</thead>
<tbody>
<tr id ="new_row" style="display:none;">
<th><input type="text" class="form-control" placeholder="Enter Product ID" /></th>
<th><button type="button" class="btn btn-default"">Add Product</button></th>
<th></th>
<th></th>
</tr>
</tbody>
</table>
<a id="add_row" class="btn bt-default">Add New Row</a>
Кроме того, я получаю следующее сообщение об ошибке:
TypeError: document.getElementById(...).firstChild.setAttribute is not a function
не могу понять, почему это не действует функция.
Это прекрасно работает. Благодарю. Можете ли вы указать, почему мой код не работал? – user3736335
Во-первых, поскольку @Utkanos упоминает «row_id», это переменная, поэтому ее нужно вывести из цитат, во-вторых, честно говоря, прошло много времени с тех пор, как я в последний раз использовал чистую JS, что я не могу отлаживать коды, написанные в JS, Знаю, может быть много причин, почему это не сработало! одна вещь, которую я заметил в консоли, заключалась в том, что вывод 'document.getElementById (row_id)' по какой-то причине был нулевым. –