getElementsByClassName Iexplorer兼容性

时间:2014-01-17 13:55:26

标签: javascript

下午好,

让我首先说,我看到很多关于这个主题的帖子,并且包含/尝试了很多这些帖子来解决我的问题。

现在问题是,我试图找出与可用的几个浏览器的兼容性模式。 我和Iexplorer挣扎,差不多每个版本..

我尝试的所有内容,在几种脚本上都不能在浏览器中工作,而在其他所有脚本中都可以。

我遇到的主要问题是getElemtsByClassName。 例如:

var tag = window.document.getElementsByClassName("kat");

它总是在这里返回: Object不支持属性或方法'getElementsByClassName'。

我在网上看到过这个问题,也在这里,是否有人有一些关于绕过这个问题的信息? 尝试了一些东西,喜欢把它改成:

var tag = window.getElementsByClassName("kat");

var tag = getElementsByClassName("kat");

但是,我猜我在错误的方向思考.. 有人可以给我一个提示或链接来阅读如何解决这样的问题吗?

这是我通常使用的标题,我读过这应该可以解决很多问题:

<!doctype html>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

作为我的一个例子:

function insDiv() {
    var tag = window.document.getElementsByClassName("kat"), total = 0;
        for (var i in tag)
    {
    total += tag[i].checked && !isNaN(Number(tag[i].value)) ? Number(tag[i].value) : 0;
    }
    window.document.getElementById("insDiv").innerHTML = 'Kat: ' + total.toFixed(2);
}

在chrome / firefox /等中完美运行。只是不在Iexplorer。

1 个答案:

答案 0 :(得分:6)

我会忘记.getElementsByClassName()并坚持使用.querySelectorAll(),它与jQuery选择器非常相似。在IE8中使用CSS2选择器完美地工作:

var elements = document.querySelectorAll('.myClass');

您也可以从中创建自己的可重用选择器:

var $$ = function (selector) {
    return document.querySelectorAll(selector);
};

// usage
$$('#id');
$$('.className');
$$('[attributes]');