getElementsByClass [index]不起作用

时间:2017-03-24 12:38:58

标签: javascript jquery

var g = document.getElementById('my_div');
        for (var i = 0, len = g.children.length; i < len; i++)
        {
            (function(i){
                g.children[i].onclick = function(){
                    $('.galao')[i].attr('id','selectedGalao');
                }    
            })(i);
        };

所以,我试图通过他的类和索引位置获取一个元素,这样我就可以添加一个我使用的id。问题是浏览器返回我:

Uncaught TypeError: Cannot read property 'attr' of undefined at HTMLDivElement.g.children.(anonymous function).onclick

我该如何解决?

修改

代码实际上是这样的:

var g = document.getElementById('my_div');
            for (var i = 0, len = g.children.length; i < len; i++)
            {
                (function(index){
                    g.children[i].onclick = function(){
                        $('.galao')[index].attr('id','selectedGalao');
                    }    
                })(i);
            };

3 个答案:

答案 0 :(得分:2)

这样:

var g = document.getElementById('my_div');
        for (var i = 0, len = g.children.length; i < len; i++)
        {
            (function(){
                g.children[i].onclick = function(){
                    $($('.galao')[i]).attr('id','selectedGalao');
                }    
            })(i);
        };

jquery数组中的元素不是jquery对象,所以你需要使它们成为jquery对象,在它们上面使用jquery函数

答案 1 :(得分:0)

如果您正在使用jQuery,请正确使用它,它将优化您的代码:

$('#my_div').children().click(function() {
  $('.galao').eq(i).addClass('selectedGalao');
})

使用类selectedGalao而不是id作为id的另一个建议必须是唯一的,如果多个元素可以获得相同的selectedGalao id,那么这是不正确的。

答案 2 :(得分:0)

尝试这样的事情:

var g = $('#my_div');
for (var i = 0; i < g.children.length; i++) {
    g.children()[i].on('click', function () {
        $('.galao')[i].attr('id','selectedGalao'); 
    });
};