Функция не видит элемент, значение которого я хочу получить. Как исправить?
Нажатием на значок (Onclick) отправляю данные в функцию, но функция почему их не принимает. Не могу понять где ошибка, почему не видит элемент с нужным мне ID?
function delete_item(id) {
var id = document.getElementById('id_' + id).value;
var code = document.getElementById('code_' + id).value;
var quantity = document.getElementById('quantity_' + id).value;
console.log("Статус");
console.log(status, id);
$.ajax({
method: "POST",
url: "not_admission_stok_ajax.php",
data: {
id: id,
code: code,
quantity: quantity
}
})
.done(function(msg) {
// console.log(msg);
});
}
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="card-body">
<table class="table">
<tr>
<th>Номер операции</th>
<th>Артикул</th>
<th>Название</th>
<th>Поставщик</th>
<th>Количество</th>
<th>Ед. измерения</th>
<th>Стоимость</th>
<th>Сумма</th>
<th>Дата</th>
</tr>
<? while($tool = mysqli_fetch_assoc($q)) //для обработки неск. записей //Уменьшить размер шрифта??
{?>
<tr>
<td>
<a id="id_<?=$tool['id']?>">
<?=$tool['id']?><a/></td>
<td>
<a id="code_<?=$tool['id']?>">
<?=$tool['code']?><a/></td>
<td>
<a id="name_<?=$tool['id']?>">
<?=$tool['name']?><a/></td>
<td>
<a id="producer_<?=$tool['id']?>">
<?=$tool['producer']?><a/></td>
<td>
<a id="quantity_<?=$tool['id']?>">
<?=$tool['quantity']?><a/></td>
<td>
<a id="unit_<?=$tool['id']?>">
<?=$tool['unit']?><a/></td>
<td>
<a id="cost_<?=$tool['id']?>">
<?=$tool['cost']?><a/></td>
<td>
<a id="sum_<?=$tool['id']?>">
<?=$tool['sum']?><a/></td>
<td>
<a id="date_<?=$tool['id']?>">
<?=$tool['date']?><a/></td>
<td>
<btn class="btn btn-danger" onclick="delete_item(<?=$tool['id']?>)" style="text-decoration: none;">
<i class="icons icon-trash text-white"></i></btn>
</td>
</tr>
<?}?>
</table>
</div>
</div>
</div>
</div>
Ответы (2 шт):
Автор решения: vp_arth
→ Ссылка
Нужно убрать коллизию имён переменных.
var id = document.getElementById('id_'+id).value;
// Перезаписали переменную id, что мы ищем дальше?
// Чему теперь равны 'code_'+id и 'quantity_'+id?
var code = document.getElementById('code_'+id).value;
var quantity = document.getElementById('quantity_'+id).value;
Автор решения: Zhihar
→ Ссылка
уф, кажется осилил
правда на воспроизводимый пример с ваша смесь html с php не похожа, пришлось менять :)
ошибка 1:
var code = document.getElementById('code_'+id).value;
если вам нужна начинка блока, используйте textContent:
var code = document.getElementById('code_'+id).textContent;
во всяком случае такой вариант у меня работал в отличии от value
ошибка 2:
function delete_item(id)
{
var id = document.getElementById('id_'+id).value;
var code = document.getElementById('code_'+id).value;
var quantity = document.getElementById('quantity_'+id).value;
вы же первой же командой
var id = document.getElementById('id_'+id).value;
себе id перетираете и следующий доступ к элементам по id не работает - id то уже не тот - это уже значение элемента <a id = 'id_xxx'>значение</a>
сделайте хотя бы так:
function delete_item(uid)
{
var id = document.getElementById('id_'+uid).value;
var code = document.getElementById('code_'+uid).value;
var quantity = document.getElementById('quantity_'+uid).value;