我有一些选择,但我想保持领先零:
var fastTrainReading = [0943, 0957, 1006, 1013 , 1027, 1036, 1043, 1057, 1106, 1113, 1127, 1136, 1213, 1227, 1236, 1243, 1257, 1306, 1313, 1327, 1336, 1343, 1357, 1406, 1413, 1427, 1436, 1443, 1457, 1506, 1513, 1527, 1537, 1543, 1559, 1606, 1613, 1627, 1636, 1643, 1657, 1704, 1718, 1728, 1735, 1749, 1758, 1816, 1830, 1847, 1859, 1906, 1911, 1930, 1936, 1941, 1959, 2006, 2017, 2027];
这是数学表演:
var currentTime = hour*100 + mins;
if ((day == 0) || (day == 6)) {
document.write ("There are no buses today");
} else {
var displayCount = 0;
var TrainStr1 = "";
for (var i=0, len=fastTrainReading.length; i<len; ++i) {
if ((fastTrainReading[i] > currentTime) && (displayCount < 2)) {
displayCount = displayCount+1;
TrainStr1=TrainStr1 + fastTrainReading[i] + "<br/>";
}
}
}
document.write (TrainStr1)
我有一个很好的搜索,如果我错过了什么可以随意虐待我(但指出我正确的方向)。
答案 0 :(得分:2)
最简单的解决方案是将您的时间数据存储为字符串,例如var fastTrainReading = ['0943', ...
。 JavaScript将在您的计算例程中为您强制转换为整数。
对于符合传统原则的全面字符串格式化解决方案,请尝试使用sprintf()获取javascript:http://www.diveintojavascript.com/projects/javascript-sprintf
答案 1 :(得分:1)
您可以尝试使用.toString()
如下:
TrainStr1=TrainStr1 +
fastTrainReading[i].toString()
+ "<br/>";
alt把你的时间保存为字符串。
答案 2 :(得分:1)
默认情况下,您不会获得前导零。
如您所知,TrainStr1的长度为4,您可以使用以下函数来获取零。
function formatted(time) {
var s = "0000" + time;
return s.substr(s.length-4); }
在使用document.write
之前,您可以调用'格式化'功能答案 3 :(得分:0)
您需要填零数字。
Number.prototype.zf = function _zeroFormat(digits)
{
var n = this.toString(), pLen = digits - n.length;
for ( var i = 0; i < pLen; i++)
{
n = '0' + n;
}
return n;
}
if ((fastTrainReading[i] > currentTime.zf(4)) && (displayCount < 2)) {
displayCount = displayCount+1;
TrainStr1=TrainStr1 + fastTrainReading[i] + "<br/>";
}
一旦您将所有数字标准化为0-padded为4位数,就可以进行字符串比较。否则,你会遇到问题。事实上,看起来你的代码试图比较一个字符串(比如来自fastTrainReading的元素)和一个数字(currentTime)。
答案 4 :(得分:0)
只需将数组声明为字符串:
var fastTrainReading = ['0943', '0957', '1006', '1013'];
不要担心fastTrainReading[i] > currentTime
仍然有用。
'100' > 99 == true