javascript - 搜索 div 是否包含类(vanilla js)

标签 javascript html css contains

我是从 vanilla JS 开始的,所以别生气 ;) 尝试编写井字游戏代码。

我有这个 HTML:

<div class="container">
    <div class="row">
        <div class="cel empty" id="a1">
            <p>x</p>
        </div>
        <div class="cel empty" id="a2">
            x
        </div>
        <div class="cel empty" id="a3">
            x
        </div>
    </div>
    <div class="row">
        <div class="cel empty" id="b1"> x</div>
        <div class="cel empty" id="b2"> x</div>
        <div class="cel empty" id="b3"> x</div>
    </div>
    <div class="row">
        <div class="cel empty" id="c1"> x</div>
        <div class="cel empty" id="c2"> x</div>
        <div class="cel empty" id="c3">x </div>
    </div>
</div>

还有这个 JS:

var fieldEmptyElements = document.querySelectorAll('div.cel');//pobieram divy które zawierają klasę empty

    window.addEventListener('load', checkHowManyEmpty);//po załadowaniu strony wczytuje funkcję o nazwie checkHowManyEmpty


    //funkcja ma za zadanie sprawdzić jak dużo pól div ma klasę empty
    function checkHowManyEmpty(){
        for(var i=0, max=fieldEmptyElements.length; i<max; i++){
            if(fieldEmptyElements.classList.contains('empty')){
                alert('there is one element with empty class');
            }
            else{
                alert('no element with empty class');
            }
        }
    }

函数需要检查是否有任何元素具有 EMPTY 类 - 但控制台给了我这个:“未捕获的类型错误:无法读取未定义的属性‘包含’ 在 checkHowManyEmpty”。知道为什么吗?

最佳答案

为什么要在循环中自己执行检查,而不让选择器引擎来完成工作?毕竟这就是它的优化目的......

document.querySelectorAll('div.cel.empty').length 会告诉你 div.cell 中是否有类为 empty 的元素 一个简单的方法调用中的元素。

评论中的函数示例 - 不必要的 else-if 替换为简单的 else:

function checkHowManyEmpty() {
    var fieldEmptyElements = document.querySelectorAll('div.cel.empty');
    if (fieldEmptyElements.length >= 1) {
        console.log('at least one element');
    } else {
        console.log('no empty elements');
    }
}

关于javascript - 搜索 div 是否包含类(vanilla js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289161/

相关文章:

html - 如何在手机/平板电脑上将 4 列表 (css) 转换为 2 列

javascript - 隐藏在抽屉导航器后面的内容

javascript - 如何在选择器中指定前一个元素的属性?

javascript - 使用 javascript 克隆 php foreach 元素

javascript - 如何使用 JavaScript 在屏幕上移动两个不同的图像

javascript - 在 Javascript 幻灯片动画中重新渲染定位在窗口大小调整上的 HTML 元素

javascript - 根据设备的大小限制图像的下载

javascript - 如何使用 stanza.io 客户端和 ejabberd 服务器出现在线?

javascript - 如何避免警告 : chunk styles [mini-css-extract-plugin] Conflicting order in GatsbyJS?

html - 将 css 应用于特定的 li 类