人们会认为将 3 个字符的缩写转换为数字表示将是一件容易的事。JavaScript 说“不!”。
$(selector).each(function() {
// convert month abbreviation to numerical representation
var monthStr = $(this).text().match(/[^\/]*/)[0];
var months = {
JAN: 1,
FEB: 2,
MAR: 3,
APR: 4,
MAY: 5,
JUN: 6,
JUL: 7,
AUG: 8,
SEP: 9,
OCT: 10,
NOV: 11,
DEC: 12
};
var month = months[monthStr].toString();
var date = $(this).text().replace(monthStr, month);
$(this).text(date);
});
即使代码有效且有效,我的控制台仍然出现以下错误:
未捕获的类型错误:无法调用未定义的方法“toString”
这绝对没有意义,因为选择器的文本被正确替换(至少根据眼睛)。
当我声明“monthStr”变量时,问题似乎就开始了。如果我将其设置为静态“MAR”作为示例并从“月”变量定义中删除“.toString()”,则不再发生错误。
此外,唯一保存代码的是已经提到的我的月份变量的“.toString()”转换。如果它不在那里,我最终会得到一个“未定义”的值。
只是想分享我当天的 JavaScript 愚蠢经历,并希望有人可以详细说明为什么会抛出这个错误,即使代码完美无缺。