2010-11-11 65 views
0

我的目標是將工具提示(包含定義)與使用JS的客戶端上的某些單詞相關聯。
使用Django/Python(來自GAE數據存儲)生成文本。
爲了達到這個目的,我需要爲需要定義的多個關鍵詞掃描一段文本,併爲工具提示動態創建一個html'標題'。JavaScript,Django和Google App Engine - 替換文本

我已經成功地爲一個關鍵詞做了一次,但是,我似乎無法在同一塊文本中搜索和替換多個值(當我嘗試使用django forloop完成時,整個原始字符串爲每個替換命令出現一次 - 見下文)。

我的代碼:

var str="<p>Paragraph of text containing key words such as test1 and test2! </p>"; 
    {% for i in thing %} 
    document.write(str.replace(/{{i.word}}/gi, "<strong><a title='{{i.tooltip}}'> {{i.word}}</a></strong>")); 
    {% endfor %} 

這導致:包含文本,如關鍵字1和1關鍵字關鍵詞

「段落
段落包含關鍵詞,如關鍵字1文本和keyword2!「

我所需的輸出是:「含有這些關鍵詞的文字段落關鍵字11關鍵字

任何援助將不勝感激,我對JS的知識非常有限。

回答

1

這樣做是簡單地Django的範圍內建立了繩子for循環最簡單的方式,每一次就可以了更換,那麼只有在最後輸出它:

{% for i in thing %} 
str = str.replace(/{{i.word}}/gi, "<strong><a title='{{i.tooltip}}'> {{i.word}}</a></strong>")); 
{% endfor %} 
document.write(str); 
+0

謝謝您的回答。這讓我取得了一些進展。文本不再重複每次,但是,只有最後一個i.word的工具提示出現。其他人都沒有。這是因爲你每次都要替換字符串的定義。我嘗試追加它,但是,它又重複了一遍。< – 2010-11-14 04:16:51

+0

不,代碼是正確的 - 您每次都想要替換'str'的​​定義。查看頁面源代碼以查看生成的javascript,並且可能會放置一些警報語句(或者更好,如果已安裝Firebug,則爲'console.debug()')以查看如何構建'str'。 – 2010-11-14 10:19:59