javascript - JS/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().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) );
});

但结果将正确的字符串替换为“未定义”。现在,如果我替换最后一行:

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

与:

$(this).text(month);

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

什么导致了堆栈溢出?¿

最佳答案

$(this).text() 返回一个字符串。修改该字符串不会影响原始字符串。

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

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

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

关于javascript - JS/jQuery 替换部分日期字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647347/

相关文章:

javascript - jQuery($) 在模块文件中不可用

javascript - 与 Pagedown 的 PreBlockGamut 链接

javascript - 无法理解 JavaScript 中的对象方法

javascript - 没有收到有关 AJAX 成功的警报

javascript - 多个 jquery 或 javascript 和日期选择器不工作

javascript - 打开侧面菜单时更改正文的 alpha 值

javascript - 是否可以从 javascript 更改内部 css?

php - 为什么我的 html/php/ajax 返回查询中的所有行

javascript - 在运行时更改 css 关键帧属性

javascript - Sencha 新记录 ID 检索