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

时间:2014-11-18 09:34:52

标签: javascript parsing svg types nan

这是问题,

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

我得到的价值是"比例"值。它从最大值为0.1到1+(0.x)。例如,这是我得到的值:

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;

所以,在这一点上,我需要规模为" float"或者我可以用来计算价值的东西......每当我尝试这样做时,我都会收到这样的信息:

Unexpected NaN value ...

更新:

似乎问题来自我必须做的计算。 所以,第一个是获得鼠标偏移:

var offsetX = event.offsetX==undefined?event.layerX:event.offsetX;

这给了我一个类似" 2048"的值,我在控制台输出它,例如:

console.log(parseFloat(offsetX));

我显示正确的值。 后来我试试这个:

var calculated = (parseFloat(offsetX))*(parseFloat(scale));

和THERE,当我输出如下结果时:

console.log(calculated);

我得到" NaN" ...

感谢您的帮助:)

1 个答案:

答案 0 :(得分:3)

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

scale = parseFloat(scale);