我在HTML文档中将变量列为%SUBTOTAL%,如果我只是将%SUBTOTAL%替换为数字,在本例中为“551,313.46”。 如果我写这个:
<script type="text/javascript">document.write(%SUBTOTAL%);</script>
它被替换为“551313.46”
我想用这个数字进行基本的数学运算但是我试图将它乘以2
<script type="text/javascript">document.write(%SUBTOTAL%*2);</script>
我刚刚得到这个“551626.92”所以,只有在昏迷之后的数字乘以2,我怎样才能得到整数?
答案 0 :(得分:3)
这里的问题是数字中的逗号不是数千个分隔符,而是operator。
浏览器看到的是
(expresion 1), (expression 2)
你不能吐出这样的数字并让它发挥作用。您需要删除逗号以进行操作。
使用代码看起来像某些浏览器允许你将多个参数传递给document.write并将它们写出来
document.write("A","B","C","D");
导致ABCD被写出,这就是你看到结果的原因。
这样的事情会起作用
document.write(parseFloat("%SUBTOTAL%".replace(/,/g,"")*2));
如果您希望再次插入逗号,则需要添加代码以插入它。
答案 1 :(得分:1)
逗号将您的号码拆分为两个单独的值,这些值作为单独的参数传递给document.write
。解决方案是删除逗号。最好的解决方案是改变服务器端。
如果你绝对必须,你可以修改你的代码,以便JavaScript删除它。
document.write("%SUBTOTAL%".replace(/[^0-9.]/g,'') * 2);
/[^0-9.]/g
将匹配非0-9或句点的所有字符。用空字符串替换它们以将其移除。乘以2会将字符串转换为数字并乘以。
答案 2 :(得分:0)
这在javascript中不是问题,在您使用的任何服务器端语言中都存在问题。您需要确保将%SUBTOTAL%
格式化为数字,而不是字符串。
以下是当前传递给前端代码的内容:551,313.46
当你乘以2时,它显示为:551,313.46*2
您应该在SERVER SIDE代码中使用ParseFloat
函数或类似函数,希望这个函数可以说明逗号。由于这是服务器端的字符串,您可能只能使用字符串替换函数a-la SUBTOTAL.replace(',','')
删除逗号,但在显示服务器端代码之前,实际上没有办法有效地回答这个问题。
如果你在客户端做这件事已经死定,没有向我们提供你的服务器端来源,并且迫使我们猜测你的问题;这是一个非常糟糕的黑客来解决你所看到的问题:
尝试使用引号包裹%SUBTOTAL%
:document.write(ParseFloat("%SUBTOTAL%")*2)
答案 3 :(得分:-1)
尝试做类似document.write(parseFloat(%SUBTOTAL%)* 2)