Javascript - 使用 innerHTML 替换 html

Posted

技术标签:

【中文标题】Javascript - 使用 innerHTML 替换 html【英文标题】:Javascript - Replace html using innerHTML 【发布时间】:2013-03-15 03:36:45 【问题描述】:

我正在尝试使用 innerhtml javascript 替换 html。

发件人:

aaaaaa/cat/bbbbbb

收件人:

<a href="http://www.google.com/cat/world">Helloworld</a>

这是我的代码

<html>
<head>
</head>
<body>
<p id="element1">aaaaaa/cat/bbbbbb</p>

<script language="javascript">
var strMessage1 = document.getElementById("element1") ;
strMessage1.innerHTML = strMessage1.innerHTML.replace( /aaaaaa./g,'<a href=\"http://www.google.com/') ;
strMessage1.innerHTML = strMessage1.innerHTML.replace( /.bbbbbb/g,'/world\">Helloworld</a>') ;
</script>
</body>
</html>

当我运行此代码时,它会消失 Helloworld 超链接。 我做错了什么。请帮忙。

感谢您的所有帮助。

【问题讨论】:

【参考方案1】:

您应该将 replace() 链接在一起,而不是分配结果并再次替换。

var strMessage1 = document.getElementById("element1") ;
strMessage1.innerHTML = strMessage1.innerHTML
                        .replace(/aaaaaa./g,'<a href=\"http://www.google.com/')
                        .replace(/.bbbbbb/g,'/world\">Helloworld</a>');

见DEMO。

【讨论】:

我这样做了,但它破坏了页面的其余部分,从它插入的任何地方开始。 @M21 HTML 字符串替换更像是一个有趣的练习,而不是一个可靠的解决方案。如果您有稍微不同的问题,请提出您自己的问题。举例说明为什么它在您的问题中不起作用,向我们展示您的尝试,如果您愿意,也可以链接到此问题。【参考方案2】:

您正在替换起始标记,然后将其放回innerHTML,因此代码将无效。在将代码放回元素之前进行所有替换:

var html = strMessage1.innerHTML;
html = html.replace( /aaaaaa./g,'<a href=\"http://www.google.com/');
html = html.replace( /.bbbbbb/g,'/world\">Helloworld</a>');
strMessage1.innerHTML = html;

【讨论】:

这对我也有效,但会破坏页面的其余部分。

以上是关于Javascript - 使用 innerHTML 替换 html的主要内容,如果未能解决你的问题,请参考以下文章

Javascript数组和innerHTML

如何使用javascript替换innerhtml中的值

在Javascript中使用多个innerHTML分隔标签

Javascript - 使用 innerHTML 替换 html

Javascript 中的 .innerHTML

在带有 innerHTML 的 Javascript 中使用引号