快速按名称检查Div元素

时间:2014-05-13 18:56:12

标签: javascript jquery html dom

我有一些Div:

<div id="content">
    <div class="c" id="1">
        <div id="xyz">dont care</div>
        <div id="texts1">
            <div name="check"> ContentText </div>  
        </div>
    </div>
    <div class="c" id="2">
        <div id="xuyz">dont care</div>
        <div id="texts2">
            <div name="check"> ContentText </div>  
        </div>
    </div>
</div>

我想遍历“c”类的所有元素。 然后我想检查,如果每个“c”元素的名为“check”的Div元素包含特殊文本。

如果为true,则操纵“c”元素(包含特殊文本)

我试过这样的事情:

var ele = document.getElementsByClassName("c");
for(var i=0;i<ele.length;i++)
{
 var check = ele[i].getElementsByName("check");
 if(check.innerHTML ....)
}

但那不起作用:/ 从Firefox登录:

TypeError: ele[i].getElementsByName is not a function

我的错误在哪里?

4 个答案:

答案 0 :(得分:2)

使用jQuery这很简单 -

$('[name="check"]:contains("your special text")')

答案 1 :(得分:2)

一个简单的querySelectorAll()应该可以解决问题:

var check = document.querySelectorAll('.c [name="check"]');

正如评论中所述,只有document具有getElementsByName方法。

答案 2 :(得分:1)

使用jQuery(你也用它标记了它)

$(document).ready(function () {
    $('div.c').find('div[name="check"]').each(function(){
        // here check HTML and do needed manipulations
        if($(this).html() == 'ContentText'){
            $(this).closest('div.c').children().first().html('I CARE');
        }
    });
}); 

参见jSFiddle - &gt; http://jsfiddle.net/ApfJz/32/

答案 3 :(得分:0)

以下是对代码的修改,使其按预期工作

var ele = document.getElementsByClassName("c");
for (var i = 0; i < ele.length; i++)
{
    if (ele[i].getAttribute('name') === "check") {
        // do something with matching elements here
    }
}