通过Javascript更改CSS对我来说在IE8中不起作用

时间:2014-04-25 21:56:11

标签: javascript html css internet-explorer-8

我有一小段代码,我正在运行以根据页面上发生的事件来打开和关闭某些DIV标签。此代码如下:

function toggleBack() {
    var list = document.getElementsByClassName('innerContentForEmailCapture');
    var list2 = document.getElementsByClassName('mpRight');
    var list3 = document.getElementsByClassName('mpBtns');
    try {
        for (var i = 0; i < list.length; i++) {
            list.item(i).style.display = 'none';
        }
        for (var ii = 0; ii < list2.length; ii++) {
            list.item(ii).style.display = 'block';
        }
        for (var iii = 0; iii < list3.length; iii++) {
            list.item(iii).style.display = 'block';
        }
    } catch(err) {
        alert(err);
    }
}

请注意,此代码完全按照我希望它在调用时执行,除了处理ie8 之外。使用此代码时,我收到一条错误消息,指出:

TypeError:对象不支持此属性或方法

我不完全确定我在这里做错了什么。我们的想法是将任何具有“innerContentForEmailCapture”类的DIV的显示变为 none ,并将显示变为 block ,以用于具有“mpRight”和“”类别的任何DIV mpBtns”。

有更简单的方法吗?允许行为在ie8?

中工作的一个

1 个答案:

答案 0 :(得分:3)

问题在于您的

document.getElementsByClassName 

IE8不支持此功能。你最好用

document.querySelectorAll

所以你会:

document.querySelectorAll('.innerContentForEmailCapture')
document.querySelectorAll('.mpBtns')
document.querySelectorAll('.mpRight')

或者,如果您需要使用getElementsByClassName,您可以使用某些polyfill,例如this