我试图通过类名获取元素,在 IE 9+ 中我可以使用 document.getElementsByClassName,而在 IE 8 document.querySelectorAll 中可以使用。
上述 2 个功能在 IE 7 中不可用,我正在尝试使用此处提供的 kapa 答案中的想法 getElementsByClassName() doesn't work in old Internet Explorers like IE6, IE7, IE8
下面是我正在尝试的代码`
function getElementsByClassNameBackwardCompatability(className) {
if (document.getElementsByClassName) {
return document.getElementsByClassName(className);//EI 9+
} else if (document.querySelectorAll(className)) {
return document.querySelectorAll(className);//EI 8
} else { // IE7 - (not working)
var d = document, element, pattern;
pattern = ".//*[contains(concat(' ',@@class, ' '), ' " + className + " ')]";
element = d.evaluate(pattern, d, null, 0, null);
return element;
}
}`
它在 IE 7 中抛出错误“JavaScript 运行时错误:由于错误 80020101,无法完成操作。
”
下面是我如何使用该功能
var ddlone = getElementsByClassNameBackwardCompatability(".myClass");
$(ddlone).dropdownchecklist("destroy");
$(ddlone).dropdownchecklist({ icon: {}, closeRadioOnClick: true, maxDropHeight: 150});
$(getElementsByClassNameBackwardCompatability(".myDateClass")).each(function () {
$(this).datepicker({
dateFormat: 'dd/mm/yy',
showButtonPanel: true,
changeMonth: true,
changeYear: true,
defaultDate: new Date(),
});});
有谁知道如何在 IE 7 中使其正常工作吗?
最佳答案
该函数确实采用类名,而不是类选择器 - 不带点。尝试将其称为
getElementsByClassNameBackwardCompatability(".myDateClass")
你真的应该使用original code from that answer ,您的在几个关键方面有所不同,导致它无法工作。
关于javascript - 如何在 IE 7 和 6 中通过类名获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765644/