javascript - getElementById 替换 HTML

标签 javascript html replace

<script type="text/javascript">
   var haystackText = document.getElementById("navigation").innerHTML;

   var matchText = '<a href="http://mydomain.co/?feed=rss">Subscribe to RSS</a>';

   var replacementText = '<ul><li>Some Other Thing Here</li></ul>';

   var replaced = haystackText.replace(matchText, replacementText);

   document.getElementById("navigation").innerHTML = replaced;
</script>

我正在尝试将一串 HTML 代码替换为其他内容。我无法直接编辑代码,所以我使用 Javascript 来更改代码。

如果我在常规字符串上使用上述方法匹配文本,例如只是“订阅RSS”,我可以很好地替换它。但是,一旦我尝试替换 HTML 字符串,代码就会“失败”。

此外,如果我要替换的 HTML 包含换行符怎么办?我将如何搜索它?

<ul><li>\n</li></ul>

??

我应该用什么或做什么来代替这个?或者我只是错过了一小步?我确实在这里搜索过,但也许我的搜索关键字并不是找到适合我情况的结果的最佳选择......

编辑:要提一下,我在页面的页脚中编写了这个脚本,在我希望替换的文本之后,所以在我想要覆盖的内容出现之前编写脚本不是问题。 :)

最佳答案

当前您正在使用 String.replace(substring, replacement) 它将搜索 substring 的精确匹配并将其替换为 replacement 例如

"Hello world".replace("world", "Kojichan") => "Hello Kojichan"

精确匹配的问题在于它不允许除精确匹配之外的任何其他内容。

要解决这个问题,您将不得不开始使用正则表达式。使用正则表达式时你必须注意

  • ?/\等需要转义的特殊字符\?\/, \\
  • 多行模式/regexp/m
  • 如果要替换表达式/regexp/g 的多个实例,则进行全局匹配
  • 允许多个空白实例的闭包 \s+ 用于 [1..n] 空白字符和 \s* 用于 [0..n] 白色-空格字符。

要使用正则表达式而不是子字符串匹配,您只需将 String.replace("substring", "replacement") 更改为 String.replace(/regexp/, "replacement") 例如

"Hello world".replace(/world/, "Kojichan") => "Hello Kojichan"

关于javascript - getElementById 替换 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6772125/

相关文章:

vb.net - 在 VB.NET 中搜索/替换

python - 如何在Python中去除字符串中数字和句点的组合?

c# - 如何忽略 String.replace 中的大小写

javascript - 如何将 JavaScript 对象数据添加到 HTML

javascript - phonegap 的 nfc 插件对象在我的一个 javascript 文件中抛出异常

javascript - Google map api 根据状态而不是地理坐标创建热图

html - 是否可以根据动态生成元素的类将 css 应用于元素?

javascript - 使用 jQuery 显示/隐藏循环中生成的具有特定类和 id 的表行

wordpress - 为什么我的表单域没有水平对齐?

javascript - 在 lightSlider 中运行 Javascript