繁体   English   中英

Javascript将NaN字符串属性转换为可用数字

[英]Javascript convert NaN string attribute to usable number

这是问题所在

在项目的某个地方,我有一个svg容器,必须在其上应用转换。 转换只是“文本属性”,因此,我计算了一个值,然后将其设置为我的svg属性。

我得到的值是“标度”值。 从0.1到1+(0.x),最大值为2。 示例,这是我得到的值:

var scaleValue = "1.3000";

我这样把它作为“ transform”属性:

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” ...

感谢帮助 :)

将其作为字符串提取后,您始终可以parseFloat

scale = parseFloat(scale);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM