16

私はinnerHTMLjavascriptを使用して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ハイパーリンクが消えます。私が間違っていること。助けてください。

よろしくお願いします。

4

2 に答える 2

23

結果を割り当てて再度置換するのではなく、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を参照してください。

于 2013-03-25T15:24:07.287 に答える
5

開始タグを置き換えてから元に戻す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;
于 2013-03-25T15:22:58.317 に答える