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]并且dd[1]都会undefined在 IE8 中返回。

编写代码的更好方法是什么?或者有没有办法让字符串 [/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 回答