有两个类似的类 - 'item'和'item one'
当我使用document.getElementsByClassName('item')
时,它会返回与上述两个类匹配的所有元素。
我如何只使用'item'类获取元素?
答案 0 :(得分:3)
document.querySelectorAll('.item:not(.one)');
另一种方法是遍历document.getElementsByClassName('item')
返回的内容,并检查one
类是否存在(<或p>):
if(element.classList.contains('one')){
...
}
答案 1 :(得分:3)
类名item one
表示该元素包含类item
和类one
。
因此,当你执行document.getElementsByClassName('item')
时,它也会返回该元素。
你应该做这样的事情来选择只有item
类的元素:
e = document.getElementsByClassName('item');
for(var i = 0; i < e.length; i++) {
// Only if there is only single class
if(e[i].className == 'item') {
// Do something with the element e[i]
alert(e[i].className);
}
}
这将检查元素是否只有类item
。
答案 2 :(得分:1)
你会想要为完全匹配创建自己的函数,因为类中的空格意味着它有多个类。类似的东西:
function GetElementsByExactClassName(someclass) {
var i, length, elementlist, data = [];
// Get the list from the browser
elementlist = document.getElementsByClassName(someclass);
if (!elementlist || !(length = elementlist.length))
return [];
// Limit by elements with that specific class name only
for (i = 0; i < length; i++) {
if (elementlist[i].className == someclass)
data.push(elementlist[i]);
}
// Return the result
return data;
} // GetElementsByExactClassName
答案 3 :(得分:1)
如果你有jQuery,可以使用attribute equals selector语法完成,如下所示:with tf.Session():
input = tf.placeholder(tf.float32)
classifier = ...
print(classifier.eval(feed_dict={input: your_data}))
。
如果您坚持使用$('[class="item"]')
,请参阅其他答案。
答案 4 :(得分:0)
您可以使用Array.filter
将匹配的集合过滤为仅有test
类的匹配集:
var elems = Array.filter( document.getElementsByClassName('test'), function(el){
return !!el.className.match(/\s*test\s*/);
});
或仅限test
而非one
的人:
var elems = Array.filter( document.getElementsByClassName('test'), function(el){
return el.className.indexOf('one') < 0;
});
(Array.filter
可能会有所不同,具体取决于您的浏览器,并且在旧浏览器中不可用。)为了获得最佳浏览器兼容性,jQuery对此非常有用:$('.test:not(.one)')