1

時間の選択肢はありますが、先行ゼロを維持したいと思います。

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)

私はかなり良い検索をしました、何かを逃した場合は私を虐待してください(しかし私を正しい方向に向けてください)。

4

5 に答える 5

2

最も簡単な解決策は、時間データを文字列として保存することvar fastTrainReading = ['0943', ...です。JavaScriptは、計算ルーチンで整数にキャストします。

従来の原則に準拠した包括的な文字列フォーマットソリューションについては、javascriptのsprintf()を試してください:http ://www.diveintojavascript.com/projects/javascript-sprintf

于 2011-05-24T10:30:31.810 に答える
1

.toString()
like: alt を使用して、時間を文字列として保存することができます。
TrainStr1=TrainStr1 +fastTrainReading[i].toString()+ "<br/>";

于 2011-05-24T10:34:43.647 に答える
1

デフォルトでは、先行ゼロは取得されません。

TrainStr1 の長さが 4 であることはわかっているので、次の関数を使用してゼロを取得できます。

function formatted(time) {
    var s = "0000" + time;
    return s.substr(s.length-4); }

document.write を使用する前に、関数「formatted」を呼び出すことができます

于 2011-05-24T10:35:38.640 に答える
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 で埋めて 4 桁になるように正規化すると、文字列の比較が可能になります。そうしないと、問題が発生します。現状では、コードが文字列 (fastTrainReading の要素など) と数値 (currentTime) を比較しようとしていたようです。

于 2011-05-24T10:34:55.467 に答える
0

配列を文字列として宣言するだけです:

var fastTrainReading = ['0943', '0957', '1006', '1013'];

心配fastTrainReading[i] > currentTimeする必要はありません。 '100' > 99 == true

于 2011-05-24T10:44:49.757 に答える