繁体   English   中英

如何迭代htmlCollection

[英]How to iterate over htmlCollection

我对此有些困难。 在Backbone中,我有一个这样的函数:

 functionOne: function(){
        $('#myTExtbox-' + budgetLine.attr('id')).on('change keyup paste', function(){
           that.mySecondFunction(this);
        });
 }

在这种情况下, this是一个textbox ,它位于div中的table 然后:

mySecondFunction: function(tb){
       var tbody = tb.parentElement.parentElement.parentElement.parentElement.parentElement;
       //gets main parent, which is a tbody, inside a table, inside a div

}

然后我想迭代tbody ,遍历每一行并在特定单元格中找到一个textbox 问题是这段代码:

    $.each(tbody, function(index, item){
        cost = item;
        var t= index;
    });

似乎不允许我去任何项目。 在这个例子中,如果我尝试做类似的事情:

  item.getElementById('test');

我收到一个错误:

TypeError: Object #<HTMLCollection> has no method 'getElementById'

为什么我不能迭代这个对象并访问其中的对象?

谢谢

UPDATE

这是一个小提琴: http//jsfiddle.net/HX8RL/14/

本质上,应该发生的是:当文本框发生变化时,我想迭代tb父表中的所有行并总结所有Tb值。 请记住,所有tb都处于相同的单元格位置,因为在其他地方我可能不想包含其他tb。

不会有任何TBody集合尝试使用children()代替

$.each(tbody.children('tr'), function(index, item){
        cost = item;
        var t= index;
    });

演示小提琴

直接迭代所有输入元素以获取值。

var tbody = tb.parentElement.parentElement.parentElement;
    alert(tbody.id);
    var input = $('#tbody').find('input');
    alert(input);
    console.log(input);
    for (var i = 0; i < input.length; i++) {
        alert(input[i].value);
        alert(i);
    }

见小提琴 - http://jsfiddle.net/HX8RL/18/

我认为这里有一些问题。 你知道每页只能有一个ID吗? 所以你必须改为使用document.getElementByid('test')

由于您还使用jQuery,因此可以使用find函数item.find('#test') 但我认为这不会解决你的问题。 不知道你想要达到什么目标,如果你详细解释一下你的问题是什么,也许我会帮助你。

tb.parentElement.parentElement.parentElement.parentElement.parentElement;

可以写成(在jQuery中)

$(tb).parents('tbody');

我已经设置了一个小提琴 ,也许它可以帮助你。

小提琴中使用的代码:

var myFuncs = (function() {

    function funcA() {
        $('input').on('keyup', function() {
           funcB(this); 
        });
    }

    function funcB(myInput) {
        var $table = $(myInput).parents('table');

        $table.find('tr > td > input').each(function() {
           var $input = $(this);

            if($(myInput).attr('id') != $input.attr('id'))
                $input.val("I'm called from another input");
        });
    }

    return {
        funcA : funcA
    }

})();

myFuncs.funcA();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM