【问题标题】:Javascript convert NaN string attribute to usable numberJavascript将NaN字符串属性转换为可用数字
【发布时间】: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


    【解决方案1】:

    你总是可以parseFloat它作为一个字符串获取它:

    scale = parseFloat(scale);
    

    【讨论】:

    • 我做到了...当我 console.log(parseFloat(scale)) 我在控制台中得到 1.3,但似乎问题来自我正在使用偏移值进行的计算...
    • 但是问题出在哪里呢?你说Console.log(scale) gives me 1.3000... So, the value i get is the good one, BUT i get it as a string (I'm parsing a string...)
    • console.log(typeof(offsetX)) 给我“数字”,console.log(typeof(scale)) 给我“对象”...这是问题...
    • 好的,最后一件事,scale 对象的值是多少?
    • “scale”的值是字符串“1.x”(1.3,或其他...),parseFloat(scale)是一个“数字”...(offsetXValue)也是一个数字... :/ 但在同一计算中使用这 2 个变量会给出“NaN”返回...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多