jQuery根据键值对象查找和替换文本

时间:2012-07-09 15:32:08

标签: jquery arrays search object replace

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

但我无法让它发挥作用,

这是该网站的测试网址:

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

正如您所看到的,它是一个包含帖子信息的博客Feed。我正试图以日期为目标月份,并在西班牙月份进行搜索并替换每个月份。

这里是javascript,它全部包含在jQuery(文档).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再次堆叠。

1 个答案:

答案 0 :(得分: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以获取完整代码和演示。