【发布时间】:2020-04-21 01:26:28
【问题描述】:
我有一个 php 变量..<?=number_format($total_commission,2)?>
这有价值
£3,400.00
然后我有一个 JavaScript 脚本,它可以计算前端的值
// Count Up
function animateValue(id, start, end, duration) {
var obj = document.getElementById(id);
var range = end - start;
var minTimer = 50;
var stepTime = Math.abs(Math.floor(duration / range));
// never go below minTimer
stepTime = Math.max(stepTime, minTimer);
// get current time and calculate desired end time
var startTime = new Date().getTime();
var endTime = startTime + duration;
var timer;
function run() {
var now = new Date().getTime();
var remaining = Math.max((endTime - now) / duration, 0);
var value = Math.round(end - (remaining * range));
obj.innerHTML = value;
if (value == end) {
clearInterval(timer);
}
}
timer = setInterval(run, stepTime);
run();
}
var value1 = <?=$total_count?>;
var value2 = <?=$total_commission?>;
var value3 = <?=$active_refs?>;
animateValue("value1", 0, value1, 1750);
animateValue("value2", 0, value2, 1750);
animateValue("value3", 0, value3, 1750);
我遇到的问题是当 php 变量在 javascript 中使用时,它会将数字转换为整数并丢失十进制值。从 PHP 到 JavaScript 时如何保持数字为小数?
我尝试在 end 变量上使用 toFixed(2) 但没有运气..
【问题讨论】:
-
"which counts up to the value on the front-end" 你的意思是 JavaScript 代码正在对数字进行数学运算?还是 JavaScript 只是在动画中显示数字?
-
@RuudHelderman 在动画中是的,但是 JavaScript 确实会计算出从哪个数字开始计数,并且也是
-
您的 PHP 代码向您的 JavaScript 代码公开了一个格式化数字。格式化数字是字符串,而不是数字。你不能对它做数学。你甚至不应该尝试。
-
不要在PHP中格式化数字,保持原样并在对其进行数学运算后在JS中格式化
-
var value2 = "<?php echo $total_commission?>".replace(/[^\d.]/g, '')应该可以工作,但就像其他人所说的那样,对 PHP 中的未格式化数字进行数学运算。
标签: javascript php integer decimal