下面是SVG路径:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="sss" viewBox="0 0 500 300">
<path id="s3" d="M 10,90 Q 100,15 200,70 Z"/>
</svg>
如何更改d
的值?
为什么alert(document.getElementById('s3').d);
给予我undefined
?
下面是SVG路径:
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="sss" viewBox="0 0 500 300">
<path id="s3" d="M 10,90 Q 100,15 200,70 Z"/>
</svg>
如何更改d
的值?
为什么alert(document.getElementById('s3').d);
给予我undefined
?
4条答案
按热度按时间eyh26e7m1#
属性可以用另一种方式设置,使用
setAttribute
:这似乎工作。
attributes和properties是有区别的。属性的设置类似于
<elem attr='value'>
,属性是动态设置的。例如,输入元素在输入内容时不会更改其属性。但是,属性会发生变化。因此
.value
将返回正确的结果,而.getAttribute('value')
将返回value="something"
设置的初始值。在您的示例中,它是一个显式属性而不是属性。因此,
.d
不工作,而.getAttribute('d')
工作。http://jsfiddle.net/Kdp4v/
nkkqxpd92#
SVGPathElement
接口没有d
属性:正如其他人所说的,可以使用所有XML应用程序都可用的标准DOM 2Core方法
myPath.getAttribute('d')
来访问数据,将其作为一个大而难看的字符串。myPath.getAttributeNS('http://www.w3.org/2000/svg','d')
。*但是,如果希望路径数据的面向对象表示,则需要以下属性之一:
pathSegList
normalizedPathSegList
animatedPathSegList
animatedNormalizedPathSegList
所有这些属性都给予了一个
SVGPathSegList
,它是SVGPathSeg
对象的有序列表(不是数组),可以使用numberOfItems
和getItem()
枚举这些对象。请注意,
SVGPathSeg
是一个基接口,它被从getItem()
中获取的更具体的对象继承:下面是它的用法:
deikduxw3#
尝试使用
getAttribute()
:nr7wwzry4#
向有同样问题的当代人问好。我不知道2011年的情况如何,但我们现在有setAttribute来解决这些问题