如何使this.getElementsByClassName('class')[0]
适用于Internet Explorer 6-8?是否有任何polyfill来解决这个问题?
答案 0 :(得分:5)
仅仅为了记录,旧的浏览器仍然存在,因为人们一直在努力支持它们。
polyfill for document.getElementsByClassName
有了这个说,一个简短的谷歌搜索可以带你到这个链接: https://gist.github.com/eikes/2299607
IE6 / 7的polyfill是这样的:
if (d.evaluate) { // IE6, IE7
pattern = ".//*[contains(concat(' ', @class, ' '), ' " + search + " ')]";
elements = d.evaluate(pattern, d, null, 0, null);
while ((i = elements.iterateNext())) {
results.push(i);
}
}
基于document.evaluate
方法
https://developer.mozilla.org/en-US/docs/Web/API/document.evaluate
编辑:element.getElementsByClassName的polyfill
您似乎想要在HTML元素上而不是在文档上调用getElementsByClassName方法。不幸的是,我不认为你可以在IE6和7(甚至8)上填充,因为这个答案似乎暗示: How to add my own methods to HTMLElement object?
您仍然可以使用document.evaluate
来完成您想要的功能(提示:第二个参数是上下文节点;它应该是您的元素),但是您需要将调用代码更改为以下内容:< / p>
<div onclick="myPolyfill('class', this)[0].innerHTML = 'works'">