【问题标题】:how to access checked rows from a table data如何从表数据中访问选中的行
【发布时间】:2020-01-16 20:59:12
【问题描述】:

我有一个动态生成的表格,在表格加载后,我需要根据复选框在控制台中打印几行选定的行。

表格中填充了来自后端的数据。

<div class="row" style="margin-left : 8px !important;margin-right : 8px !important">
                    <table class="table table-bordered fixed_headers" id="Device_list">
                        <thead>
                            <tr>
                                <th>&nbsp;</th>
                                <th>IPADDRESS</th>
                                <th>DEVICE NAME</th>
                                <th>STATUS</th>
                                <th>BACKUP</th>
                            </tr>
                        </thead>
                        <tbody id = "all_device">
                            {% for item in Device_list %}
                                    <tr>
                                        <td><input type="checkbox" name="device_check"/></td>
                                        <td>{{ item['ipaddress'] }} </td>
                                        <td>{{ item['name'] }} </td>
                                        <td>{{ item['status'] }} </td>
                                        {% if item['backup'] == 'no_backup' %}
                                            <td>{{ item['backup'] }}</td>
                                        {% else %}
                                            <td><a href="{{ url_for('backups_texts',path = item['backup']) }}">Backup</a> </td>
                                        {% endif %}
                                    </tr>
                            {% endfor %}
                        </tbody>
                        <input type="submit" id="bt" value="Show Table Data"  />
                    </table>

function myfunc() {
        console.log ("inside my function");
        var valuelist = [];
        $('#all_device tr').each(function() {
            $(this).find("input[name='device_check']:checked").each(function() {
                var values = [];
                $(this).closest("td").siblings("td").each(function() {
                    values.push($(this).text());
                });
                valuelist.push(values.join(", "));
            });
        });
        console.log("(" + valuelist.join("),(") + ")");
   }
   $(document).ready(function() {
        $("#bt").click(function() {
            myfunc();
        });
   });

请帮助访问表格行内容。

【问题讨论】:

  • 您的代码 (myfunc) 不起作用吗?
  • 你看到了什么错误?

标签: javascript python jquery html


【解决方案1】:

我不知道您的代码是否不起作用,但最好查询所有选中的复选框,而不是循环遍历所有 tr,如下所示:

function myfunc() {
    var valuelist = [];
    $('#all_device input[name=device_check]:checked').each(function(i, c){
        var cb = $(c);
        valuelist.push(cb.parent().siblings().map(function(si, s){ return $(s).text() }).get());
    });

  console.log('Selected', valuelist);
}

控制台应该输出如下:

注意:屏幕截图仅显示示例数据

编辑

如果您想遵循原始代码(其中 valuelist 是逗号分隔值的数组,您可以改用此代码:


function myfunc() {
    var valuelist = [];
    $('#all_device input[name=device_check]:checked').each(function(i, c){
        var cb = $(c);
        valuelist.push(cb.parent().siblings().map(function(si, s){ return $(s).text() }).get().join(', '));
    });

  console.log('Selected', '(' + valuelist.join('),(') + ')');
}

【讨论】:

  • 嗨,@dunli 感谢您的评论,我在控制台上获得了首选输出,但随后我被困在通过 ajax 调用发送的后端访问此列表。 python 端的 request.form 提供了 ImmutableMultiDict。知道如何在 python 函数中访问它。感谢高级帮助。
  • ajax 调用 --- $.ajax({ url: '127.0.0.1:5000/backup', data: JSON.stringify(valuelist), dataType: "json", method: 'POST', success: function (data) { alert(data.value); } });
  • @app.route('/backup', methods=['POST',"GET"]) def backup_conf(): if request.method == "POST": value = request.form () 打印 (值) 返回 ""
  • 获取输出为: ImmutableMultiDict([('[["10.11.9.3","host1","Node status is Up","no_backup"],["10.11.9.4","host2 ","节点状态为 Up","no_backup"]]', '')])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多