【发布时间】:2019-05-26 17:06:36
【问题描述】:
所以我创建了一个带有 for 循环的 html 表,其中包含来自我的 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>
编辑:
我查找了提到的那些 .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: Can't find variable: 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 属性的情况下也能正常工作。所以我实际上正在回来,例如去年圣诞节,威猛!但是现在我很难在没有 td-tags 的情况下获取值。我也用 .value 试过了。
编辑 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>
【问题讨论】:
-
使用
this.parentNode获取td,然后使用.previousSibling遍历同一行中的所有单元格。 -
“提交”什么?你没有表格。
-
您是否已经开始定义
get_values()函数?看看你从什么开始可能会有所帮助 -
@Barmar 我查了这些,但还是没能成功。你能看看我的编辑并给我更多信息吗? :)
-
您应该在答案中发布有效的解决方案,而不是在问题中。您可以回答自己的问题。
标签: javascript python flask html-table jinja2