0

我对 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。

4

1 回答 1

1

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

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

于 2012-05-24T09:05:40.157 回答