SVG文档中Gecko / Firefox中缺少document.getElementsByName

时间:2011-02-22 18:39:10

标签: javascript firefox svg gecko

我有一个SVG文档,其中我使用JavaScript突出显示鼠标悬停时的元素。我的元素都有名字 - 一些元素具有相同的名称,因为虽然它们出现多次,但它们在逻辑上指的是相同的东西。当一个复制元素的一个实例被鼠标悬停时,我希望它们全部突出显示。

要实现突出显示,我会查找被鼠标悬停的元素的名称。然后,我调用document.getElementsByName()来查找共享该名称的所有元素。使用返回的元素数组,我迭代地应用适当的样式来突出显示。

这在WebKit上运行良好,在Gecko上失败 - 后者告诉我getElementsByName未定义。其中,查看document的功能表确实如此:getElementsByClassNamegetElementsByTagNamegetElementsByTagNameNS都在那里; getElementsByName遗失了。

关于为什么Gecko离开这个选择器的任何想法?谷歌在这件事上没有任何帮助(尽管我可能提出了错误的问题)。

对于Gecko缺乏对此选择器的支持的紧凑解决方案的任何建议?我非常希望不必劫持class属性,或者(更糟)为我重复的实例生成唯一的id来完成任务。

2 个答案:

答案 0 :(得分:1)

问题是:SVG文档是一个(X)HTML文档吗? https://developer.mozilla.org/en/DOM/document.getElementsByName

FTA:

  

name属性仅适用于(X)HTML文档。该方法返回具有name属性的所有元素,例如,或者甚至将名称放在不支持name属性的元素上。

答案 1 :(得分:0)

@ roatin-marth让我走上了回答的道路,但是从未发布过答案。我想我会在这里捕捉他的建议,以防它帮助其他人。

使用querySelectorAll提供了我正在寻求的紧凑解决方法 - 它必须比getElementsByName更强大(更灵活)。