Итак, я создал html-таблицу с циклом for, содержащим список объектов из моего приложения на python.Теперь я хочу реализовать функцию удаления, и для этого мне нужно получить значения ячеек из той же строки, где была нажата кнопка.Я бы предпочел сделать это на JavaScript, а не на jquery, поскольку у меня нет никакого опыта с этим
<table class="table" id="table">
<tr>
<th scope="col">#</th>
<th scope="col">Titel</th>
<th scope="col">Interpret</th>
</tr>
{% for song in songs %}
<tr>
<td>{{song.id}}</td>
<td>{{song.titel}}</td>
<td>{{song.interpret}}</td>
<td>
<button class="btn btn-danger" type="submit" id="delete_button" name="delete_button" onclick="get_values(this)">Delete</button>
</td>
</tr>
{% endfor %}
</table>
EDIT: Я посмотрел упомянутые .parentNode и .previousSibling @Barmar и попытался написать функцию для существующего onclick = "get_values (this)", которую я уже добавил к кнопкам выше
<script>
function get_values(this) {
var td = this.parentNode;
var x = td.previousSibling.innerHTML;
console.log(x);
}
</script>
Ответ console.logсказал: "ReferenceError: Не могу найти переменную: get_values"
РЕДАКТИРОВАТЬ 2:
Так что я наконец-то добился прогресса в избежании ReferenceError.Я пробовал функцию get_values (this), которая была запрещена, поэтому я изменил ее на функцию get_values (x).
<script>
function get_values(x) {
var td = x.parentNode;
interpret = td.previousSibling;
interpret_value = interpret.innerHTML;
titel = interpret.previousSibling.previousSibling.innerHTML;
console.log(titel);
console.log(interpret_value);
}
</script>
</body>
Проблема, с которой я столкнулся сейчас, заключается в том, что код фактически работает без свойств .innerHTML.Так что я на самом деле возвращаюсь, например, в прошлое Рождество и блин !.Но сейчас я борюсь с получением значений без тд-тэгов.Я попробовал это с .value aswell.
РЕДАКТИРОВАТЬ 3: Хорошо, я предполагаю, что произошла небольшая ошибка, теперь я сам ее разобрал, вот код, который я сейчас использую, и он дает мне правильные значения.Я до сих пор не понимаю, почему мне нужно использовать двойной .previousSibling, но пока он работает, я в порядке.Спасибо всем, кто пытался помочь, я действительно ценю это.Желаю вам, ребята, с Новым годом.
<script>
function get_values(x) {
var td = x.parentNode;
interpret = td.previousSibling.previousSibling;
interpret_value = interpret.innerHTML;
titel = interpret.previousSibling.previousSibling;
titel_value = titel.innerHTML;
console.log(interpret);
console.log(interpret_value);
console.log(titel);
console.log(titel_value);
}
</script>