Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript toString()在Firefox和IE之间的工作方式不同_Javascript_Svg - Fatal编程技术网

Javascript toString()在Firefox和IE之间的工作方式不同

Javascript toString()在Firefox和IE之间的工作方式不同,javascript,svg,Javascript,Svg,我对函数.toString()有点(大)问题。 我有一个包含SVG多段线的字符串,需要获取“points”属性。 我尝试过myPoly.toString(),但在所有情况下,如果我在Firefox或IE中运行我的应用程序,我都会收到不同的答案。 在firefox中,当值写入SVG时,我正确地接收到它,在IE中,点字符串被转换为数字 例如: Firefox 多段线id=“1191”points=“303270.6858428074628092.26231488 303132.68318446628

我对函数.toString()有点(大)问题。 我有一个包含SVG多段线的字符串,需要获取“points”属性。 我尝试过myPoly.toString(),但在所有情况下,如果我在Firefox或IE中运行我的应用程序,我都会收到不同的答案。 在firefox中,当值写入SVG时,我正确地接收到它,在IE中,点字符串被转换为数字

例如:

Firefox

多段线id=“1191”points=“303270.6858428074628092.26231488 303132.68318446628154.95824449 303058.00286964628191.46425108 303006.3180320424628217.33599697 302959.8344855664628250.84303829 302913.4126512644628286.5711075 302804.37817555628374.03209193 302771.9940167064628406.03998642 302741.24160518436.28899

IE

多段线id=“1191”points=“303271,4.62809e+006 303133,4.62816e+006 303058,4.62819e+006 303006,4.62822e+006 302960,4.62825e+006 302913,4.62829e+006 302804,4.62837e+006 302772,4.62841e+006 302741,4.62844e+006

我如何防止这种转变


谢谢。亚历山德拉

svg多边形(和路径)的字符串值在浏览器之间根据位置空间和逗号的不同而返回。通过indexOf进行解析将无法跨浏览器工作。 当我们使用点列表时,多边形点是一致的。然后,当比较x,y值时,你可以将你的应用程序四舍五入到“安全”小数位…我用了4

var polyPoints=myPolygon.points
var n=polyPoints.numberOfItems
for(var k=0;k<n;k++)
{
  var xy=polyPoints.getItem(k)
  var x=xy.x
  var y=xy.y
// ...
}
var polyPoints=myPolygon.points
var n=多点。numberOfItems

对于(var k=0;kIE是四舍五入,
e
只是指数型的。我不确定你能不能阻止这一点,这只是IE对路径进行字符串化的方式,但它们是相同的数字,浮点数不是那么精确。你确定a)两个浏览器使用相同版本的代码而不是缓存的代码b)转换这不仅仅是您用来显示字符串的任何控制台的一个功能吗?两个输出是完全不同的。因此,我的应用程序在IE中无法正常工作。我必须比较点,firefox中的两个相等点在IE中是不同的:(为什么输出不同会有问题?指数表示法是有效的。您可以使用parseFloat()返回数值,例如console.log(parseFloat(“4.62809e+006”));此外,如果你看这个303270.6858428074628092.26231488 303271,4.62809e+006,你可以看到X坐标是四舍五入的,所以我丢失了小数部分。我非常感谢弗朗西斯!!!!明天早上我会试试你的代码。如果它有效,我会检查你的答案是否正确,并给你寄一盒西西里阿兰西尼!!!:)