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

循环获取选中Checkbox的name值时出现错误,寻求解决方案

问题分析与解决

你遇到的问题核心是混淆了jQuery对象和原生DOM元素的操作逻辑:

  1. checkedInputs.attr('name')[i]的问题:
    jQuery的attr()方法对多元素对象调用时,仅返回第一个匹配元素的属性值。所以checkedInputs.attr('name')拿到的是第一个选中input的name字符串,[i]相当于取这个字符串的第i个字符,自然会反复输出第一个name的单个字符。

  2. checkedInputs[i].attr('name')的问题:
    checkedInputs[i]是从jQuery对象中取出的原生DOM元素,原生DOM元素没有jQuery的attr()方法,因此会报错“attr不是函数”。


正确写法

方法1:用jQuery的eq()定位元素

eq(i)会返回jQuery对象中第i个元素的jQuery包装版本,可正常调用attr():

success: function (data) {
    var checkedInputs = $(data).find('input[checked="checked"]'); 
    for (var i = 0; i < checkedInputs.length; i++) {
        console.log(checkedInputs.eq(i).attr('name'));
    }
}

方法2:直接操作原生DOM元素

原生DOM元素可通过getAttribute()方法获取属性:

success: function (data) {
    var checkedInputs = $(data).find('input[checked="checked"]'); 
    for (var i = 0; i < checkedInputs.length; i++) {
        console.log(checkedInputs[i].getAttribute('name'));
    }
}

方法3:用jQuery的each()遍历(更简洁)

jQuery提供专门的遍历方法each(),无需手动编写for循环:

success: function (data) {
    $(data).find('input[checked="checked"]').each(function() {
        // jQuery方式
        console.log($(this).attr('name'));
        // 原生方式(性能更优)
        // console.log(this.getAttribute('name'));
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:27:36