未捕获的TypeError:elements [i] .attr不是函数

时间:2016-01-16 10:01:22

标签: javascript jquery

这是我的代码:

<https://jsfiddle.net/ef5cojqd/2/>

当我试图运行它时,我会#收到此错误:

  

未捕获的TypeError:elements [i] .attr不是函数

为什么?

3 个答案:

答案 0 :(得分:1)

使用

$(elements[i]).attr()

$.attr()是jQuery方法。同样的修复适用于您的.on()功能

$(elements[i]).on("ifChanged", handle_company_state($(elements[i]).attr('id')));

因为你在这里使用jQuery。

您可以少写

var container = $('#data-table'),
    elements  = container.find('input'); // container is a jQuery object; thus, $.find() works as traversing method in the DOM. see http://api.jquery.com/find/

$(elements).on("ifChanged", function(){
    handle_company_state($(this).attr('id'))); // use `this` as reference to changed element.
});

答案 1 :(得分:1)

使用getattribute方法代替.attraddEventListener代替.on。并you might not need jquery

function () {
    var container = document.getElementById('data-table');
    var elements = container.getElementsByTagName("input");
    for (i = 0; i < elements.length; i++) {
        elements[i].addEventListener("ifChanged", handle_company_state(elements[i].getAttribute('id')));
    }
 }
function handle_company_state(element_id) {
    //....
}

答案 2 :(得分:1)

我认为你正在寻找类似的东西:

function () {
    var elements = $("#data-table input");
    for (i = 0; i < elements.length; i++) {
        $(elements[i]).on("ifChanged", handle_company_state($(elements[i]).attr('id')));
    }
}

function handle_company_state(element_id) {
    //....
}