【问题标题】:JavaScript, Django, and Google App Engine - Replace TextJavaScript、Django 和 Google App Engine - 替换文本
【发布时间】:2011-05-08 10:43:45
【问题描述】:

我的目标是使用 JS 将工具提示(包含定义)与客户端上的某些单词相关联。
该文本是使用 Django/Python 生成的(来自 GAE 数据存储)。
为此,我需要扫描一段文本以查找需要定义的多个关键词,并为工具提示动态创建一个 html“标题”。

我一次成功地为一个关键字完成了此操作,但是,我似乎无法在同一文本块中搜索和替换多个值(当我尝试使用 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 %}

这会导致:

“包含keyword1和keyword2等关键词的文本段落!
包含keyword1和keyword2等关键词的文本段落!"

我想要的输出是:

“包含keyword1keyword2等关键词的文本段落!”

任何帮助将不胜感激,我对 JS 的了解非常有限。

【问题讨论】:

    标签: javascript python django google-app-engine str-replace


    【解决方案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);
    

    【讨论】:

    • 感谢您的回答。这让我取得了一些进展。文本不再每次重复,但是,只显示最后一个 i.word 的工具提示。其他人都没有。这是因为您每次都在替换字符串的定义。我尝试附加它,但是它再次重复>.
    • 不,代码是正确的 - 您确实希望每次都替换 str 的定义。查看页面源代码以查看生成的 javascript,并可能放置一些警报语句(或者更好的是,console.debug(),如果您安装了 Firebug)来查看 str 是如何构建的。
    猜你喜欢
    • 2011-09-18
    • 2023-03-07
    • 2012-06-01
    • 2012-12-17
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    相关资源
    最近更新 更多