我遇到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。
答案 0 :(得分:1)
setAttribute(NS)方式不正确,SVG中没有'currentScale'属性。
'currentScale'是SVGSVGElement interface中的一个属性,只要数字合理(例如不是Inf或NaN),你应该能够像你一样获取和设置它。但请注意,SVG 1.1规范仅定义currentScale在最外层svg元素上的行为。