3

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

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

这在 WebKit 上效果很好,但在 Gecko 上却失败了——后者告诉我这getElementsByName是未定义的。其中,查看函数表document确实是这样:getElementsByClassNamegetElementsByTagNamegetElementsByTagNameNS都在那里;getElementsByName不见了。

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

对于 Gecko 对此选择器缺乏支持的紧凑解决方法有什么建议吗?我非常希望不必劫持类属性或(更糟)为我的重复实例生成唯一 ID 来完成任务。

4

2 回答 2

1

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

自由贸易协定:

name 属性仅适用于 (X)HTML 文档。该方法返回所有具有 name 属性的元素,例如,或者即使 name 放置在根本不支持 name 属性的元素上。

于 2011-02-22T19:25:13.133 回答
0

@roatin-marth 让我在这里找到答案,但从未发布为答案。我想我会在这里捕捉他的建议,以防它帮助其他人。

UsingquerySelectorAll提供了我正在寻找的紧凑的解决方法——它必须比getElementsByName.

于 2013-03-22T20:45:03.597 回答