我正在创建一个javascript函数,它会在页面中找到一个锚点(特别是使用,而不是id),然后遍历它的父级,直到它到达包含某个类的一个。我使用了以下代码,它在Firefox 3.0中运行良好,但在Firefox 3.5和Internet Explorer 8中的getAttribute都失败了。
var tab = document.getElementsByName(headerName).item(0);
while (tab.getAttribute('class') != 'card') {
tab = tab.parentNode;
}
我知道这在jQuery中会很容易但我受到很大限制。如何在这些新浏览器中更改getAttribute以及我该怎么做才能解决这个问题?
答案 0 :(得分:4)
试试tab.className
?
答案 1 :(得分:1)
所以我的第一个猜测是,如果.className什么都不返回,那么tab是未定义的。
我认为
有问题document.getElementsByName(headerName).item(0);
使用Firebug在while循环上设置断点,然后在控制台中键入“tab”并按Enter键。如果没有适用于FF 3.5的Firebug。尝试使用它来找到获得所需元素的其他方法。
答案 2 :(得分:0)
document.getElementsByName()在IE中不起作用。
http://webbugtrack.blogspot.com/2007/08/bug-411-getelementsbyname-doesnt-work.html
根据Web标准,该函数应返回具有其“name”属性的给定值的所有元素或仅返回表单的输入元素。
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-71555259
http://www.w3.org/TR/xhtml1/#h-4.10
也许,为“class”属性分配名称并使用document.getElementsByTagName()可以迭代文档的特定元素,但扫描给定类型的所有标记的速度很慢。