0

IE8で発生したバグに遭遇しましたが、Firefox、Chrome、IE9+では発生しませんでした。

コードのスニペット:

Date.prototype.ddmmyyyy = function() {
    var yyyy = this.getFullYear().toString();
    var mm = (this.getMonth()+1).toString();
    var dd = this.getDate().toString();
    return (dd[1]?dd:"0"+dd[0]) + '/' + (mm[1]?mm:"0"+mm[0]) + '/' + yyyy;
};

それがやみくもに明白である(またはしようとしている)ことを説明する詳細には立ち入りません。私はそれを知りませんでした、dd[0]そして両方ともIE8でdd[1]戻るでしょう。undefined

コードを書くためのより良い方法は何ですか?または、文字列[/ array]インデクサーを機能させる方法はありますか?

4

2 に答える 2

4

表記.charAt(1)の代わりに使用します。[1]


.split()または、文字列を配列に変換することもできます。

var dd = this.getDate().toString().split("");

dd[1];

最終的に、私はこのようにします:

Date.prototype.ddmmyyyy = function() {
    var yyyy = this.getFullYear();
    var mm = ("0" + (this.getMonth()+1)).slice(-2);
    var dd = ("0" + this.getDate()).slice(-2);
    return dd + '/' + mm + '/' + yyyy;
};
于 2012-11-16T03:16:30.430 に答える
2

三元ステートメントを変更して、文字列の長さを確認できます。

dd.length > 1 ? dd : '0' + dd

于 2012-11-16T03:20:24.257 に答える