Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有动态类名的document.querySelector_Javascript - Fatal编程技术网

Javascript 具有动态类名的document.querySelector

Javascript 具有动态类名的document.querySelector,javascript,Javascript,我有一个3类的div,第三类(动态)更改 测试 我需要选择类名为“一”、“二”和“三”的元素 任何名称的类名 我尝试过使用document.querySelector('.one.two.*')-注意* 有什么建议吗 编辑:实际上有5个类,第三个(动态)是动态生成的。 对不起,我本来应该说,我明白这会使问题复杂化…您可以: 使用querySelectorAll获取类one和two的所有元素 借用filter创建一个数组,其中只包含正好有3个类的数组 获取该数组中的第一个元素 [].filter

我有一个3类的div,第三类(动态)更改

测试
我需要选择类名为“一”、“二”和“三”的元素 任何名称的类名

我尝试过使用
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>