尝试使用JavaScript执行某些计算逻辑时遇到了一些问题。基本上沿着一条路线有80个台阶,完成整个路线需要大约9分钟。
所以我试图做一个自动路线,告诉你离开目的地的分钟数。我的逻辑如下:
9 * 60 / 80 = 6.75
所以基本上每一步都是6.75秒,但我想显示一个像9而不是8.4分钟的数字。这是代码:
getAllBusLoc(function(busList) {
var totalBusLoc = busList.length;
var busLeftPct = Math.round(parseFloat(busList.length) * 40 / 100)
document.getElementById("busStopLeft").innerHTML = totalBusLoc;
pointArr.forEach(function(coord,index){
setTimeout(function(){
var travelTime = document.getElementById(travelDistMin").value;
moveNext(coord.x, coord.y);
}, 1000* index);
});
});
我把旅行时间作为变量travelTime,在这种情况下是9分钟。对于每个点,我想从9分钟减去6.75秒并显示一个圆数而不是8.2。
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
使用Math.round()
从travelTime中减去6.75。
这将舍入到最接近的整数。
答案 1 :(得分:1)
我可以建议的一个想法是编写一个通用函数,将十进制时间间隔(例如,8.25分钟)转换为等效的' mm:ss'值而不是舍入,以便显示精确的时间表示:
Number.prototype.toMMSS = function () {
d = this;
var sign = d < 0 ? "-" : "";
var min = Math.floor(Math.abs(d))
var sec = Math.floor((Math.abs(d) * 60) % 60);
return sign + (min < 10 ? "0" : "") + min + ":" + (sec < 10 ? "0" : "") + sec;
};
示例:
8.25.toMMSS() // "08:15"
<强> JSFiddle 强>
或者,您可以尝试像插件duration这样的功能:
moment.duration(8.25, 'minutes').minutes(); // 8
或者,humanize方法来完善:
console.log(moment.duration(8.51, "minutes").humanize()); // "9 minutes"
console.log(moment.duration(8.15, "minutes").humanize()); // "8 minutes"