我有一小段代码,我正在运行以根据页面上发生的事件来打开和关闭某些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?
中工作的一个答案 0 :(得分:3)
问题在于您的
document.getElementsByClassName
IE8不支持此功能。你最好用
document.querySelectorAll
所以你会:
document.querySelectorAll('.innerContentForEmailCapture')
document.querySelectorAll('.mpBtns')
document.querySelectorAll('.mpRight')
或者,如果您需要使用getElementsByClassName,您可以使用某些polyfill,例如this