Javascript SVG文档上的Gecko/Firefox缺少document.getElementsByName

Javascript SVG文档上的Gecko/Firefox缺少document.getElementsByName,javascript,firefox,svg,gecko,Javascript,Firefox,Svg,Gecko,我有一个SVG文档,其中我使用JavaScript突出显示鼠标上方的元素。我的元素都有名称——有些元素有相同的名称,因为尽管它们出现多次,但它们在逻辑上引用同一事物。当复制元素的一个实例被鼠标悬停时,我希望它们都高亮显示 为了实现高亮显示,我查找鼠标悬停的元素的名称。然后,我调用document.getElementsByName(),查找所有共享该名称的元素。对于返回的元素数组,我迭代地应用适当的样式来突出显示 这在WebKit上非常有效,但在Gecko上却失败了——后者告诉我,getElem

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

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

这在WebKit上非常有效,但在Gecko上却失败了——后者告诉我,
getElementsByName
是未定义的。查看
文档的函数表
确实如此:
getElementsByClassName
getElementsByTagName
getelementsbytagnames
都在那里<缺少代码>getElementsByName

关于Gecko为什么不使用这个选择器有什么想法吗?谷歌在这件事上毫无帮助(尽管我可能问错了问题)


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

问题是:SVG文档也是(X)HTML文档吗?

自由贸易协定:

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


@roatin marth让我在这里找到了答案,但从未将其作为答案发布。我想我会把他的建议记在这里,以防对其他人有所帮助


使用
querySelectorAll
提供了我所寻求的简洁的解决方法-它必须比
getElementsByName
更健壮(更灵活)

很抱歉,对于您关于Gecko支持选择器的具体问题,我没有答案,但我很好奇您为什么不使用CSS:
circle[name=blah]:hover
-SVG中的CSS hover是否缺少浏览器支持?我还想知道jQuery的选择器系统是否弥补了这一不足(或者只是与SVG不同)。@peterorpeter:OP希望在悬停其中一个元素时突出显示具有给定名称的所有元素。CSS能做到吗?什么版本的FF?
querySelectorAll
是否不在函数表中?@Roatin Marth。好主意
querySelectorAll
在Gecko和WebKit上都能完美工作。请转发作为答复,这样我可以给你信用。谢谢@彼得计。总的来说,我喜欢你的建议;在这种特殊情况下,它的效果不如罗汀·马思。我有包含数百个元素的SVG文档。其中一些是复制实例(具有相同的名称);大多数都是独一无二的。CSS可以工作,但会非常长,因为我必须让shape[name=blah]:为每个不同的(一组)元素反复悬停。可能不会,因为文档以
开头,所以我认为它不工作并不奇怪。令人沮丧/惊讶的是,所有其他的
getElement*
选择器似乎都在那里。如果您为SVG提供XHTML MIME类型,那么您的文档至少会得到getElementsByName方法。但这并不意味着它仍将显示为SVG,或返回您想要的元素。。。