我有一些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
我的错误在哪里?
答案 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
}
}