Javascript Firefox 3.5和IE8中的getAttribute不';它不像以前那样工作了

Javascript Firefox 3.5和IE8中的getAttribute不';它不像以前那样工作了,javascript,internet-explorer,firefox,Javascript,Internet Explorer,Firefox,我正在创建一个javascript函数,该函数将在页面中找到一个锚(特别是使用,而不是id),然后遍历它的父对象,直到它到达包含某个类的锚。我使用了以下代码,它在Firefox3.0中运行良好,但在Firefox3.5和InternetExplorer8中的getAttribute中都失败 var tab = document.getElementsByName(headerName).item(0); while (tab.getAttribute('class') != 'card') {

我正在创建一个javascript函数,该函数将在页面中找到一个锚(特别是使用,而不是id),然后遍历它的父对象,直到它到达包含某个类的锚。我使用了以下代码,它在Firefox3.0中运行良好,但在Firefox3.5和InternetExplorer8中的getAttribute中都失败

var tab = document.getElementsByName(headerName).item(0);

while (tab.getAttribute('class') != 'card') {
    tab = tab.parentNode;
}

我知道这在jQuery中很容易,但我受到很大的限制。在这些新浏览器中getAttribute是如何更改的?我可以做些什么来解决这个问题?

尝试
选项卡。className

尝试
选项卡。className

所以我的第一个猜测是,如果.className不返回任何内容,则选项卡是未定义的

我在想这是出了什么问题

document.getElementsByName(headerName).item(0);

使用在while循环上设置断点,然后在控制台中键入“tab”并按Enter键。如果FF 3.5没有可用的Firebug。试着用它来找到其他方法来获得所需的元素

所以我的第一个猜测是,如果.className不返回任何内容,则tab是未定义的

我在想这是出了什么问题

document.getElementsByName(headerName).item(0);
使用在while循环上设置断点,然后在控制台中键入“tab”并按Enter键。如果FF 3.5没有可用的Firebug。试着用它来找到其他方法来获得所需的元素

document.getElementsByName()在IE中不起作用

根据web标准的不同,函数应该返回所有元素及其“name”属性的给定值,或者只返回表单的输入元素

也许,为“类”属性指定名称并使用document.getElementsByTagName()可以让迭代遍历文档的特定元素,但扫描给定类型的所有标记的速度很慢。

document.getElementsByName()在IE中不起作用

根据web标准的不同,函数应该返回所有元素及其“name”属性的给定值,或者只返回表单的输入元素


也许,为“class”属性指定名称并使用document.getElementsByTagName()可以让迭代遍历文档的特定元素,但扫描给定类型的所有标记的速度很慢。

当然,className属性在FF 3.5和IE8中也可以工作!我刚刚在这个页面上使用Firebug:document.GetElementsByCassName(“容器”)[0]进行了尝试。className在Firefox 3.5中打印出“容器”。或者,由于此页面包含jQuery,您可以使用$('div.container')[0].className,它在IE8和FF 3.5中都返回“container”。当然,className属性在FF 3.5和IE8中也可以使用!我刚刚在这个页面上使用Firebug:document.GetElementsByCassName(“容器”)[0]进行了尝试。className在Firefox 3.5中打印出“容器”。或者,由于此页面包含jQuery,您可以使用$('div.container')[0].className,它在IE8和FF 3.5.Great中都返回“container”。对于你们这些早期采用者,没有任何借口,我还不是其中之一。我认为埃里克是正确的。我找不到任何证据表明.getAttribute()或.className在FF 3.5和IE 8中以任何方式被破坏,因此我怀疑DOM元素的检索出了问题。例如,使用FF 3.5和IE8,以下两种方法都可以在该页面上正常工作:“document.getElementsByName('q')。item(0)。getAttribute('class')”或“document.getElementsByName('q')。item(0)。className”都打印出来“textbox”啊哈!问题解决了。事实证明,FF3.5返回getAttribute的方式不同于FF3.0。如果3.0中某个特定元素的属性不存在,则getAttribute返回null,而3.5返回未定义的。未中断(我不相信我曾经暗示过它被破坏了)但实现方式不同。太好了。对于早期采用者,没有任何借口,我还不是其中之一。我认为Eric是正确的。我也找不到任何证据。getAttribute()或者.className在FF 3.5和IE 8中以任何方式被破坏,因此我怀疑DOM元素的检索出了问题。例如,使用FF 3.5和IE8,以下两种方法在本页上都可以正常工作:“document.getElementsByName('q').item(0).getAttribute('class')”或“document.getElementsByName('q').item(0).className”“都打印输出”textbox“啊哈!问题解决了。事实证明,FF3.5返回getAttribute的方式不同于FF3.0。如果3.0中某个特定元素的属性不存在,getAttribute将返回null,而3.5将返回未定义。未被破坏(我不相信我曾经暗示过它被破坏),但实现方式不同。