2012-07-09 53 views
1

我已经翻遍左右替换文本,并发现了一些有用的帖子做查找/查找/替换,jQuery的发现和基于键值对对象

,但我可以”弄不明白的工作,

这里是网站的测试网址:

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

,你可以看到,这是一个博客饲料与岗位信息。我试图定位日期月份,并进行搜索并替换每个放入西班牙语月份。

这里的JavaScript中,这一切都包裹在一个jQuery(文件)。就绪()...

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真的取代任何东西。 我哪里错了? ty再次堆叠。

回答

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

+0

最优秀。非常感谢Goran。解决了。 很高兴知道为什么,如果有人有这样的答案,就会有 。 但无后顾之忧。 – joelrnorris 2012-07-09 16:27:44

+0

没问题,很高兴我能帮到你。其实,现在我喝了咖啡,看起来很明显。因为它正在遍历所有月份(即使在成功匹配之后),“originalText”覆盖了早先成功替换的“moddedText”。因此,为什么只有十二月工作,因为它没有以下几个月。 – 2012-07-09 16:44:52

+0

辉煌!这就说得通了。没有什么比第二组眼睛... – joelrnorris 2012-07-09 17:21:38