JavaScript: 检查类名是否存在

9
<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”是否存在?如果可以,我该如何做?您们太棒了。我只能更改JavaScript,不能更改HTML代码。

有没有可能返回一个true或false值来检查类“NoResult”是否存在?如果是这样,我该怎么做?你们真的很厉害。我只能更改JavaScript代码,无法更改HTML代码。

4个回答

22

使用 classList

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

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

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

var hasClass = (" " + element.className + " ").indexOf(" some-class ") > -1;

@Turnerj - 不幸的是,即使是IE9也不支持那个 :( - Joseph Silber
2
啊,你说得对,它不支持。如果其他人想知道支持情况,请在这里查看 - Turnerj
什么是元素?可以使用 div.classList 吗? - qed
如果“div”是一个对“HTMLElement”的引用,那么是的。 - alex

1
在不使用像jQuery这样的库的情况下,您可以通过以下方式在Javascript中完成它:
(' ' + MyElement.className + ' ').indexOf(' MyClassName ') != -1

这个表达式在字符串中以className属性定义的形式出现 "MyClassName" 时返回 true。
在您的特定情况下,可以这样写:
function Check()
{
    //Returns true when it exists
    return (' ' + iframe.contentDocument.getElementById('Offer').firstElementChild.className + ' ').indexOf(' NoResults ') != -1;
}

在我的回答中,之前存在一个错误,即会错误地将部分匹配识别为指出的评论。基本上,您需要考虑在检查中类名是否完整。一种简洁的方法(就像其他答案所示)是,如果您在整个className属性和要搜索的类之前和之后都有空格,则它将始终找到整个类。
虽然这样做可以工作,但我建议使用Alex's answer,因为虽然classList不适用于每个浏览器(<= IE9和其他几个),但它是问题的更简洁解决方案。

1
if ( ~(' ' + element.className + ' ').indexOf(' NoResult ') ) {
    // here you go. You've got that class...
}

0
如何在所有浏览器中检查元素是否具有类: 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'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接