IE9及更早版本中不支持classList.contains('outputDiv'),

时间:2013-09-03 04:28:54

标签: javascript internet-explorer contains

IE 9及更早版本中不支持

classList.contains('outputDiv'),还有其他选择吗?

我的代码如下:

function toggleclass() {

    var elems = document.getElementsByClassName("outputDivs");
    for (var i = 0; i < elems.length; ++i) {
        if (elems[i].classList.contains("outputDivsDesigned"))
            elems[i].className = "outputDivs";

        else
            elems[i].className += " outputDivsDesigned";
    }
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

您可以尝试此https://github.com/eligrey/classList.js

或只使用className,并搜索返回的字符串。

答案 1 :(得分:1)

我刚刚写了这篇文章,也许它可能有用吗?

http://www.tjcafferkey.me/ie9-classname-containsclass-alternative/

它基本上解释了您可以使用的这个简单替代方案:

function containsClass(yourObj, yourClass) {
    if(!yourObj || typeof yourClass !== 'string') {
        return false;
    } else if(yourObj.className && yourObj.className.trim().split(/\s+/gi).indexOf(yourClass) > -1) {
        return true;
    } else {
        return false;
    }
}

然后你将运行这样的函数

var isFeaturedPost = containsClass(obj, 'featured-post-class');

编辑:我已更新了检查yourObj存在的函数,并且yourClass是一个字符串。

答案 2 :(得分:0)

不确定它是否能够正常运行,因为没有经过测试可以为crossbrowser工作,你可以尝试: -

  classList.indexOf("outputDivsDesigned") != -1

答案 3 :(得分:0)

如果您只需要.contains()功能,请搜索className内的子字符串,即elems[i].className.indexOf("outputDivsDesigned") > -1

所以你的功能看起来像这样:

function toggleclass() {    
    var elems = document.getElementsByClassName("outputDivs");
    for (var i = 0; i < elems.length; ++i) {
        if (elems[i].className.indexOf("outputDivsDesigned") > -1)
            elems[i].className = "outputDivs";    
        else
            elems[i].className += " outputDivsDesigned";
    }
}