2012-07-09 32 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