【问题标题】:String replace function - how to skip if replaced?字符串替换功能 - 如果替换如何跳过?
【发布时间】:2011-09-18 05:53:00
【问题描述】:

我有一个包含单词和定义的 xml 文件。

myWord

当我的 html 页面有 myWord 时,我想将 myWord 更改为一个链接,其标题包含我的单词的定义。

基本上是这样的;

myWord 变成

myWord  

要从 xml 链接,我正在使用此代码。但是这段代码链接了几次,甚至定义中的单词也被链接了。所以我想检查它是否已经链接,如果是,请跳过。

x=xmlDoc.getElementsByTagName('word'); for (i=0;i' + x.item(i).attributes[0].textContent + ': ' + x.item(i).attributes[1].textContent + '\', this);" onMouseOut ="doClear();">' +x[i].childNodes[0].nodeValue + ''; 替换器(文本,链接);

我有一个替换功能

函数替换器(旧字符串,新字符串){ if(替换标签内的旧字符串) { //跳过替换 } 别的 { document.body.innerHTML = document.body.innerHTML.replace(/oldstring/, newstring); } }

如果我的旧字符串在里面,我想跳过替换

替换文字

我如何编写此代码的 if 部分。

我已经为此苦苦挣扎了好几天。请帮我! 提前致谢!

【问题讨论】:

  • 您可能不希望在字符串级别执行此操作,因为解析 HTML 非常困难(例如,您不能仅使用正则表达式可靠地解析,尽管许多人已经尝试过)。相反,我会将文本插入到 DOM 元素中(它可以断开连接,因此不会显示),然后遍历其中的文本节点,跳过您不想处理的元素中的节点。相关参考资料:DOM2 CoreDOM2 HTMLDOM3 Core
  • 你能告诉我怎么做吗,拜托!
  • 恐怕我现在没有时间,但是上面的评论中有参考资料的链接,下面是一个遍历 DOM 树的示例:stackoverflow.com/questions/5158022/…
  • 您能否为这个问题提供更多背景信息?在我看来,您正在尝试做一些可以以更好的方式实现的事情。
  • 使用jQuery(或类似的东西)会很容易。如果您这样做,请告诉我们

标签: javascript string replace


【解决方案1】:

XSLT 将是执行此操作的更好方法:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="*|@*|text()">
       <xsl:copy>
          <xsl:apply-templates select="*|@*|text()"/>
       </xsl:copy>
    </xsl:template>
    <xsl:template match="word">
        <a href="#" title="<xsl:copy-of select="data(@description)"/>">
          <xsl:copy-of select="data(.)"/></a>
    </xsl:template>
</xsl:stylesheet>

如果需要任何详细信息,请与我联系

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2017-10-27
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多