繁体   English   中英

Javascript:检查classname是否存在

[英]Javascript: Check if classname exists

<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;

在不使用像jQuery这样的库的Javascript中,你可以通过以下方式实现:

(' ' + 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和其他一些浏览器 ),但它是解决问题的更简洁的解决方案。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM