我有一个SVG文档,其中我使用JavaScript突出显示鼠标悬停时的元素。我的元素都有名字 - 一些元素具有相同的名称,因为虽然它们出现多次,但它们在逻辑上指的是相同的东西。当一个复制元素的一个实例被鼠标悬停时,我希望它们全部突出显示。
要实现突出显示,我会查找被鼠标悬停的元素的名称。然后,我调用document.getElementsByName()
来查找共享该名称的所有元素。使用返回的元素数组,我迭代地应用适当的样式来突出显示。
这在WebKit上运行良好,在Gecko上失败 - 后者告诉我getElementsByName
未定义。其中,查看document
的功能表确实如此:getElementsByClassName
,getElementsByTagName
,getElementsByTagNameNS
都在那里; getElementsByName
遗失了。
关于为什么Gecko离开这个选择器的任何想法?谷歌在这件事上没有任何帮助(尽管我可能提出了错误的问题)。
对于Gecko缺乏对此选择器的支持的紧凑解决方案的任何建议?我非常希望不必劫持class属性,或者(更糟)为我重复的实例生成唯一的id来完成任务。
答案 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
更强大(更灵活)。