7
<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");
}

是否可以返回真值或假值来检查“NoResult”类是否存在?如果是这样,我该怎么做?你们摇滚。我无法更改 HTML 编码,只能更改 javascript。

4

4 回答 4

20

使用classList.

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

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

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

var hasClass = (" " + element.className + " ").indexOf(" some-class ") > -1;
于 2013-05-10T05:26:30.633 回答
1

在不使用像 jQuery 这样的库的 Javascript 中,您可以通过以下方式完成:

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

当“MyClassName”单独出现在className属性上定义的字符串内的任何位置时,这评估为真。

在您的特定情况下,例如:

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

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

虽然这可行,但我建议Alex 的答案,因为 whileclassList 并非在每个浏览器(<= IE9 和其他一些浏览器)中都可用,但它是解决问题的更简洁的解决方案。

于 2013-05-10T05:25:12.740 回答
1
if ( ~(' ' + element.className + ' ').indexOf(' NoResult ') ) {
    // here you go. You've got that class...
}
于 2013-05-10T05:28:02.810 回答
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'))
于 2019-03-07T21:34:33.003 回答