You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery技术问询:如何在当前表格行内选取指定类的表单元素

问题解决:限制表格行内元素遍历避免重复取值

你的代码出现重复取值的核心原因是:$('.T')、$('.C')、$('.R')是在整个文档范围内选择对应类的元素,每循环一行时,都会把所有行的目标元素重新遍历一遍,自然就出现了重复结果。

要解决这个问题,只需要把选择器的搜索范围限定在当前循环的行内部,用jQuery的find()方法基于当前行去查找元素即可。

修正后的完整代码

function gather() {
    var res = '';
    var table = document.getElementById("tblQ");
    for (var i = 0, row; row = table.rows[i]; i++) {
        if (row.style.display !== 'none') {
            // 仅查找当前行内的文本框
            $(row).find('.T').each(function () {
                if ($.trim($(this).val()) !== '') 
                    res += $(this).attr('id') + '~' + $(this).val() + '\n';
            });
            // 仅查找当前行内的复选框
            $(row).find('.C').each(function () {
                if ($(this).is(':checked')) 
                    res += $(this).attr('id') + '~1\n';
            });
            // 仅查找当前行内的单选按钮
            $(row).find('.R').each(function () {
                if ($(this).is(':checked')) 
                    res += $(this).attr('id') + '~1\n';
            });
        }
    }
    alert(res);
}

关键改动说明

把原来全局搜索的$('.T')改为$(row).find('.T'),这样每次循环时,只会在当前遍历的row元素内部搜索类为T的元素,同理处理复选框和单选按钮。这样就能保证每一行只收集自身包含的输入元素,不会重复获取其他行的内容。

测试后点击按钮,会得到正确的结果:

01~myText
02~1

内容的提问来源于stack exchange,提问作者Phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:55:18