Javascript:检查classname是否存在

use*_*965 7 html javascript classname

<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>
Run Code Online (Sandbox Code Playgroud)

这是我的javascript:

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

是否可以返回true或false值来检查"NoResult"类是否存在?如果是这样,我该怎么办?你们晃动吧.我不能改变HTML编码,只能改变javascript.

ale*_*lex 19

使用classList.

var hasClass = element.classList.contains('some-class');
Run Code Online (Sandbox Code Playgroud)

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

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

var hasClass = (" " + element.className + " ").indexOf(" some-class ") > -1;
Run Code Online (Sandbox Code Playgroud)

  • 啊,你是对的,它不支持它.对于任何想要了解支持的人,[请在此处查看](http://caniuse.com/#search=classList) (2认同)

Tur*_*erj 1

在 Javascript 中,如果不使用像 jQuery 这样的库,你可以通过以下方式做到这一点:

(' ' + MyElement.className + ' ').indexOf(' MyClassName ') != -1
Run Code Online (Sandbox Code Playgroud)

当“MyClassName”单独出现在属性定义的字符串内的任何位置时,该值计算为 true className

在您的具体情况下,类似:

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

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

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