Javascript JS/jQuery替换部分日期字符串不起作用

Javascript JS/jQuery替换部分日期字符串不起作用,javascript,jquery,Javascript,Jquery,我有一个可见的表行,其中包含一个类为“time col”的表单元格。事实上,我有多个父行,父行的可见性是动态的 我试图用数字字符串(如3、4等)替换月份的三个字符字符串表示形式(如MAR、APR等) 根据我虚弱的头脑,以下方法应该有效: $('tr:visible .time-col').each(function() { // convert month string to numerical representation var monthStr = $(this).text

我有一个可见的表行,其中包含一个类为“time col”的表单元格。事实上,我有多个父行,父行的可见性是动态的

我试图用数字字符串(如3、4等)替换月份的三个字符字符串表示形式(如MAR、APR等)

根据我虚弱的头脑,以下方法应该有效:

$('tr:visible .time-col').each(function() {
    // convert month string 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];
    $(this).text( $(this).text().replace(monthStr, month) );
});
但结果将正确的字符串替换为“undefined”。现在,如果我替换最后一行:

$(this).text( $(this).text().replace(monthStr, month) );
与:

我得到了相应表格单元格中显示的正确数字(即3、4等)

什么导致堆栈溢出?

$(this).text()
返回字符串。修改该字符串不会触及原始字符串

要修改文本,请设置元素的文本:

var text = $(this).text();
$(this).text(text.replace(monthStr, month));

另外,
.replace()
使用字符串作为第一个参数仅替换字符串的第一个实例。您必须使用正则表达式一次替换所有出现的情况。

令人惊讶的是,我自己解决了这个问题。问题是,无论出于什么原因,JavaScript都没有像我预期的那样工作,它决定不给我的months对象中的数字字符串指定数据类型

更改:

var month = months[monthStr]
致:


解决了这个问题

我已经试过了,但是我没有被定义为替代者。此外,我在每个表单元格中只出现一次,因此这不重要。:)编辑原始问题以反映您的答案。此外,整个代码在jslint中签出。
var month = months[monthStr]
var month = months[monthStr].toString();