1

classList.contains('outputDiv')IE 9 及更早版本不支持,有什么替代方法吗?

我的代码如下:

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

4 回答 4

3

你可以试试这个https://github.com/eligrey/classList.js

或者只使用 className,然后搜索返回的字符串。

于 2013-09-03T04:39:05.493 回答
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 是一个字符串。

于 2016-01-13T15:58:56.583 回答
0

If all you need is .contains() functionality, search for the substring inside of the className, i.e. elems[i].className.indexOf("outputDivsDesigned") > -1.

So your function would look like this:

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";
    }
}
于 2015-04-18T21:56:57.643 回答
0

不确定它是否会起作用,因为尚未测试可用于跨浏览器,您可以尝试:-

  classList.indexOf("outputDivsDesigned") != -1
于 2013-09-03T06:40:10.917 回答