分配SVG根元素的currentScale时出错

时间:2012-05-24 08:25:45

标签: javascript svg jquery-svg

我遇到SVG和JavaScript问题:

此代码的行为符合预期:

function initSvg(width) {
    SVGRoot = document.getElementsByTagName('svg')[0];
    console.log(SVGRoot.currentScale);    // Displays '1' which is OK

但是当我尝试像这样重新分配currentScale参数时:

function initSvg(width) {
    SVGRoot = document.getElementsByTagName('svg')[0];
    SVGRoot.currentScale = parseFloat(width)/400;   
    console.log(SVGRoot.currentScale);    // Should display some floating point number

我收到错误

Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) nsIDOMSVGSVGElement.currentScale]

并且不执行警报。我对SVGRoot.currentScale的分配有什么问题?

更新:

使用

时错误消失
SVGRoot.setAttribute('currentScale', parseFloat(width)/400);

SVGRoot.setAttributeNS(null, 'currentScale', parseFloat(width)/400);

但是currentScale的实际值不会改变。无论传递给setAttribute的是什么,它都保持为1。

1 个答案:

答案 0 :(得分:1)

setAttribute(NS)方式不正确,SVG中没有'currentScale'属性。

'currentScale'是SVGSVGElement interface中的一个属性,只要数字合理(例如不是Inf或NaN),你应该能够像你一样获取和设置它。但请注意,SVG 1.1规范仅定义currentScale在最外层svg元素上的行为。