Javascript 具有动态类名的document.querySelector
我有一个3类的div,第三类(动态)更改Javascript 具有动态类名的document.querySelector,javascript,Javascript,我有一个3类的div,第三类(动态)更改 测试 我需要选择类名为“一”、“二”和“三”的元素 任何名称的类名 我尝试过使用document.querySelector('.one.two.*')-注意* 有什么建议吗 编辑:实际上有5个类,第三个(动态)是动态生成的。 对不起,我本来应该说,我明白这会使问题复杂化…您可以: 使用querySelectorAll获取类one和two的所有元素 借用filter创建一个数组,其中只包含正好有3个类的数组 获取该数组中的第一个元素 [].filter
测试
我需要选择类名为“一”、“二”和“三”的元素
任何名称的类名
我尝试过使用document.querySelector('.one.two.*')
-注意*
有什么建议吗
编辑:实际上有5个类,第三个(动态)是动态生成的。
对不起,我本来应该说,我明白这会使问题复杂化…您可以:
querySelectorAll
获取类one
和two
的所有元素filter
创建一个数组,其中只包含正好有3个类的数组[].filter.call(document.queryselectoral('.one.two'),函数(el){
返回el.classList.length==3;
})[0];
[].filter.call(document.queryselectoral('.one.two'),函数(el){
返回el.classList.length==3;
})[0]。style.background='orange'代码>
一两
一二三四
一二三
非常感谢Oriol为我指明了正确的方向!
使用他的示例,我得出了以下结果,返回类为“一两动态四五”的元素:
a
b
c
d
[].filter.call(document.querySelectorAll('.one.two'),函数(el){
if(el.classList.toString().indexOf('four-five')!=-1){
警报('id='+el.id);
返回el;
}
})[0]。style.background='orange';
为什么您不能只使用document.querySelector('.one.two')
?@rnevius,因为他的要求可能是必须有第三个类,无论是什么类,如果您想强制至少3个类而不是正好3个,则使用=3
。在支持的情况下,它可以直接使用数组的方法,而不是过滤器
。
<div class="one two dynamic">test</div>
<body>
<p id="a" class="one two">a</p>
<p id="b" class="one two dynamic four five">b</p>
<p id="c" class="one two dynamic">c</p>
<p id="d" class="one two dynamic">d</p>
<script>
[].filter.call(document.querySelectorAll('.one.two'), function(el) {
if(el.classList.toString().indexOf('four five') != -1){
alert('id='+el.id);
return el;
}
})[0].style.background = 'orange';
</script>
</body>