欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python web开发之页面表格选择CheckBox复选框所在行的数据并返回

程序员文章站 2022-05-31 13:29:44
...
背景:开发了个接口测试平台,想通过CheckBox多选用例,然后批量运行,这里我们需要的是用例id的列表
网页
Python web开发之页面表格选择CheckBox复选框所在行的数据并返回
HTML代码

    <div>
        <form role="form" id="form_table">
            <div>
                <table class="table table-bordered table-hover" id="table_id">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>序号</th>
                            <th>ID</th>
                            <th>名称</th>
                            <th>所属项目</th>
                            <th>所属模块</th>
                            <th>创建者</th>
                            <th>创建时间</th>
                            <th>操作</th>
                        </tr>
                    </thead>
                    <tbody id="tbody_id">
                    {% for foo in case %}
                        <tr>
                            <td><input type="checkbox" name="case_chk" value="{{ foo.id }}"></td>
                            <td>{{ loop.index }}</td>
                            <td>{{ foo.id }}</td>
                            <td>{{ foo.name }}</td>
                            <td>{{ foo.belong_project }}</td>
                            <td>{{ foo.belong_module }}</td>
                            <td>{{ foo.author }}</td>
                            <td>{{ foo.create_time }}</td>
                            <td>
                                <div class="btn-toolbar">
                                    <div class="btn-group btn-group-xs">
                                        <button type="button"
                                                class="btn btn-default btn-xs text-primary"
                                                target="_blank"
                                                data-toggle="tooltip" title="运行"
                                                onclick="post_run('/api/{{ username }}/run_test/', {'id':'{{ foo.id }}', 'mode':'run_by_test'})">
                                            <span class="glyphicon glyphicon-play"></span>
                                        </button>
                                        <button type="button"
                                                class="btn btn-default btn-xs text-primary" data-toggle="tooltip" title="编辑">
                                            <span class="glyphicon glyphicon-pencil"></span>
                                        </button>
                                        <button type="button"
                                                class="btn btn-default btn-xs text-primary" data-toggle="tooltip" title="恢复">
                                            <span class="glyphicon glyphicon-copy"></span>
                                        </button>
                                        <button type="button"
                                                class="btn btn-default btn-xs text-primary" data-toggle="tooltip" title="删除"
                                                onclick="post_del('/api/{{ username }}/delcase/',{'id':'{{ foo.id }}','type':'{{ foo.type_value }}'})">
                                            <span class="glyphicon glyphicon-trash"></span>
                                        </button>
                                    </div>
                                </div>
                            </td>
                        </tr>
                    {% endfor %}
                    </tbody>
                </table>
                <nav aria-label="Page navigation" class="pull-right">
                    <ul class="pagination">
                        {{ html|safe }}
                    </ul>
                </nav>
            </div>

        </form>
    </div>


方法
1、表格的每一行都有一个CheckBox按钮,所以为每一行的复选按钮在HTML代码中设置为同一个name=“case_chk”,并设置复选框的值为想要获取的用例id,然后在加载完的页面通过name获取复选框,再遍历判断是否被选中,选中的就提取复选框的value,返回即可

<script type="text/javascript">
function test() {
    var a = document.getElementsByName("case_chk");
    var case_id = [];
    for (var i=0;i<a.length;i++){
        if(a[i].checked){
            alert(a[i].value);
            case_id.push(a[i].value)
        }
    }
	console.log(case_id)

}
</script>


2、这种方法就稍微麻烦一点,需要在表格中新加一列“ID”,然后通过表格的id=table_id获取表格的所有行rows,然后判断哪一个复选框被选中,再获取该复选框的父元素的父元素的行标,然后通过行的cells来获取id所在列取得id值

<script type="text/javascript">
function test() {
    var rows = document.getElementById("table_id").rows;
    var a = document.getElementsByName("case_chk");
    var case_id = [];
    for (var i=0;i<a.length;i++){
        if(a[i].checked){
            alert(a[i].value);
            var row = a[i].parentElement.parentElement.rowIndex;
            case_id.push(rows[row].cells[2].innerHTML)
        }
    }
	console.log(case_id)

}
</script>
上面代码只是演示了如何获取用例id,至于如何传递参数及运行用例需要自己定义onclick事件的函数及参数。