Javascript 未捕获的TypeError:元素[i]。attr不是函数

Javascript 未捕获的TypeError:元素[i]。attr不是函数,javascript,jquery,Javascript,Jquery,这是我的代码: function () { var container = document.getElementById('data-table'); var elements = container.getElementsByTagName("input"); for (i = 0; i < elements.length; i++) { elements[i].on("ifChanged", handle_company_state(eleme

这是我的代码:

function () {
    var container = document.getElementById('data-table');
    var elements = container.getElementsByTagName("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) {
    //....
}
函数(){
var container=document.getElementById('data-table');
var elements=container.getElementsByTagName(“输入”);
对于(i=0;i
当我试图运行它时,我得到以下错误:

未捕获的TypeError:元素[i]。attr不是函数

为什么?

使用

$(elements[i]).attr()
$.attr()
是jQuery方法。同样的修复程序适用于
.on()
函数

$(elements[i]).on("ifChanged", handle_company_state($(elements[i]).attr('id')));
既然您在这里使用jQuery

你可以少写

改为使用方法
.attr
,并改为
.on
。和

函数(){
var container=document.getElementById('data-table');
var elements=container.getElementsByTagName(“输入”);
对于(i=0;i
我想您正在寻找类似于:

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) {
    //....
}
函数(){
变量元素=$(“#数据表输入”);
对于(i=0;i
您正在使用jQuery吗?.on()和.attr()方法必须应用于jQuery对象$(elements[i]).attr(…等等。谢谢,但是现在我得到了这个错误:Uncaught TypeError:elements[i].on不是一个function@AdamAzad为什么你认为TS需要jQiery?很明显,他没有使用它。加上你的答案,如果你想让你的代码为他工作,他可以如何添加jquery库。@Darth,1-jquery被标记。2-,他正在使用
on()
attr()
方法。这些是我的线索。:)你知道
document.getElementById('
$(“#u id”)快10倍
?我也知道这还不足以影响用户体验。这是简单性和性能之间的折衷。我宁愿坚持使用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) {
    //....
}
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) {
    //....
}