1

我四处翻找,发现了一些有用的帖子,用于使用键值对数组/对象在 jquery 中进行查找/搜索/替换,

但我无法让它工作,

这是该网站的测试网址:

http://www.larryadowns.com.php5-1.dfw1-2.websitetestlink.com/

如您所见,这是一个带有帖子信息的博客提要。我正在尝试以日期月份为目标,并为每个月份进行搜索和替换以放入西班牙月份。

这是 javascript,它都包含在一个 jQuery(document).ready()...

    var monthMap = {
        "January" : "Enero",
        "February" : "Febrero",
        "March" : "Marzo",
        "April" : "Abril",
        "May" : "Mayo",
        "June" : "Junio",
        "July" : "Julio",
        "August" : "Agosto",
        "September" : "Septiembre",
        "October" : "Octubre",
        "November" : "Noviembre",
        "December" : "Diciembre"
    };

    // sift thru the post-info, replacing only the month with the spanish one.
    $(".post-info .date").text(function(index, originalText) {

        var moddedText = '';

        for ( var month in monthMap ) {

            if (!monthMap.hasOwnProperty(month)) {
                continue;
            }

            moddedText = originalText.replace(month, monthMap[month]);

//            moddedText = originalText.replace( new RegExp(month, "g") , monthMap[month] );

            console.log("month : " + month);
            console.log("monthMap[month] : " + monthMap[month]);
        }

        console.log('-------------------');
        console.log('index : ' + index);
        console.log("monthMap : " + monthMap);
        console.log("originalText : " + originalText);

        console.log("moddedText : " + moddedText);

        return moddedText;
    });

但唉,.replace 或 .replace 与 RegEx 都没有真正取代任何东西。我哪里做错了?ty 再次堆叠。

4

1 回答 1

2

不太清楚为什么,但似乎你的代码在moddedText接下来的几个月中恢复到原来的状态。因此,它只是正确地替换了 12 月。

我使用了一种稍微不同的方法,但它应该会产生你正在寻找的东西。

$(".post-info .date").text(function(index, originalText) {

    for ( var month in monthMap )
    {
        if (originalText.indexOf(month) > -1)
        {
            return originalText.replace(month, monthMap[month]);
        }
    }

    return originalText;
});

检查这个jsFiddle以获得完整的代码和演示。

于 2012-07-09T16:10:22.627 回答