2010-11-11 54 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