检查classname是否存在

Javascript: Check if classname exists

本文关键字:存在 是否 classname 检查      更新时间:2023-09-26
<div class="Trade">
    <div id="Offer">
        <div class="NoResults">No Result!</div>
        <div class="FooterPager"> <span id="Offer"><a disabled="disabled">First</a>&nbsp;<a disabled="disabled">Previous</a>&nbsp;<a disabled="disabled">Next</a>&nbsp;<a disabled="disabled">Last</a>&nbsp;</span>
        </div>
    </div>
</div>

这是我的javascript:

function Check(){
return !(iframe.contentDocument.getElementById("Offer").firstElementChild.tagName.toLowerCase() == "table");
}

是否可以返回true或false值来检查类"NoResult"是否存在?如果有,我该怎么做?你们太棒了。我不能更改HTML编码,只能更改javascript。

使用classList

var hasClass = element.classList.contains('some-class');

进一步阅读(免责声明:链接到我自己的文章)。

如果目标平台不支持,请尝试…

var hasClass = (" " + element.className + " ").indexOf(" some-class ") > -1;
if ( ~(' ' + element.className + ' ').indexOf(' NoResult ') ) {
    // here you go. You've got that class...
}

在不使用jQuery等库的情况下,可以这样做:

(' ' + MyElement.className + ' ').indexOf(' MyClassName ') != -1

当"MyClassName"在className属性中定义的字符串中单独出现时,该值为true。

在你的特定情况下,像这样:

function Check()
{
    //Returns true when it exists
    return (' ' + iframe.contentDocument.getElementById('Offer').firstElementChild.className + ' ').indexOf(' NoResults ') != -1;
}

之前在我的回答中有一个错误,它会错误地识别部分匹配,正如评论中指出的那样。基本上,您需要在检查中考虑类名是否完整。一种简洁的方法(如其他答案所示)是,如果在整个className属性和您正在搜索的类之前和之后都加空格,它将始终找到整个类。

虽然这将工作,我推荐Alex的答案,而classList在每个浏览器(<= IE9和其他几个)不可用,它是一个更简洁的解决方案的问题。

如何检查一个元素是否在所有浏览器中都有一个类:JQuery 1.6及以下版本

    if($("#ElementId").attr('class').indexOf('ClassName') > -1)

JQuery 1.6及以上版本

    if($("#ElementId").prop('class').indexOf('ClassName') > -1)

或者,如果你根本不打算使用IE

    if($("#ElementId").prop('class').includes('ClassName'))