【发布时间】:2015-01-15 10:32:06
【问题描述】:
问题来了,
在我的项目中,我有一个 svg 容器,我必须在其上应用转换。 转换只是一个“文本属性”,所以,我计算一个值,然后将其设置为我的 svg 属性。
我得到的值是一个“比例”值。它从 0.1 变为 1+(0.x),最大值为 2。例如,这是我得到的值:
var scaleValue = "1.3000";
我这样把它作为“转换”属性:
myItem.setAttributeNS(null,"transform","scale("+scaleValue+")");
所以现在,svg 项目有一个名为“transform”的属性,其中包含一个带值的比例。
稍后在我的代码中,我需要取回这个值!现在麻烦来了... 我以这种方式取回了价值:
var transformString = myItem.getAttribute("transform");
var scale = transformString.substr((transformString.indexOf('(',transformString.indexOf(('scale('),0))+1),(transformString.indexOf((')',transformString.indexOf('scale(')))-1));
console.log(scale);
Console.log(scale) 给了我 1.3000... 所以,我得到的值是好的,但我把它作为一个字符串(我正在解析一个字符串...)
然后我需要用这个值做一些事情,比如在 mouseEvent 上:
var currentPositionX = (event.offsetX==undefined?event.layerX:event.offsetX)*scale;
所以,在这一点上,我需要将刻度设为“浮点数”或我可以用来计算值的东西......每次我尝试这样做时,我都会收到以下消息:
Unexpected NaN value ...
更新:
似乎问题来自我必须做的计算。 所以,第一个是获取鼠标偏移量:
var offsetX = event.offsetX==undefined?event.layerX:event.offsetX;
这给了我一个像“2048”这样的值,我在控制台中输出它,例如:
console.log(parseFloat(offsetX));
我得到了正确的显示值。 后来我试试这个:
var calculated = (parseFloat(offsetX))*(parseFloat(scale));
还有,当我输出这样的结果时:
console.log(calculated);
我得到“NaN”...
感谢您的帮助:)
【问题讨论】:
标签: javascript parsing svg types nan