我遇到了一个在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]
都会在IE8中返回 undefined
。
编写代码的更好方法是什么?或者有没有办法使字符串[/ array]索引器工作?
答案 0 :(得分: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;
};
答案 1 :(得分:2)
您可以修改三元语句以检查字符串的长度。
dd.length > 1 ? dd : '0' + dd