这是问题,
在我项目的某个地方,我有一个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" ...
感谢您的帮助:)