0

この正規表現を使用して、このようなリンクを見つけ、リンクの開始タグと終了タグの間のコンテンツのみに置き換えようとしています。

正規表現:

/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg

サンプルコードで正規表現をテストしましたが、動作しますが、object.innerHTMLに適用しようとしても、何も置き換えられません。なにが問題ですか?

コード:

document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1');
document.write(document.getElementById(preview_div_ID).innerHTML);

上記の「document.getElementById(preview_div_ID).innerHTML」にあるサンプルhtml:

<h5 style="line-height: 9px; margin: 2px; ">
            <span style="font-size: 7px; line-height: 8px; ">
                Ost- (caseous) <a class="tag_link" href="javascript:;" onclick="open_tag('nekros', this);">nekros</a>
            </span>
        </h5>

どんな助けでも大歓迎です


解決済み:動作方法:関数のajax呼び出しは何かを返す必要があり、コールバック関数を使用して解析できます。だから私のajax呼び出しがデータを吐き出し始めたら。良かったです。

txall。

4

3 に答える 3

5

代わりにこれを試してください:

var links = document.getElementsByTagName("a");
for( var link in links ){
 if( links[link].getAttribute("class").indexOf("tag_link") != -1 ){
  var oldLink = links[link];
  var newLink = document.createElement("a");
  var newLink.innerHTML = oldLink.innerHTML;
  oldLink.parentNode.insertBefore(newLink , oldLink);
  oldLink.parentNode.removeChild(oldLink);
 }
}

クラス名「tag_link」を持つすべてのリンクを繰り返し処理し、リンク テキストを保持しながらすべての属性を削除します。id によって、foreach ループのターゲットを単一の dom 要素にする場合は、これを単一の要素に変更できます。このような:

function stripAnchor(anchorId){
  var oldLink = document.getElementById(anchorId);
  var newLink = document.createElement("a");
  var newLink.innerHTML = oldLink.innerHTML;
  oldLink.parentNode.insertBefore(newLink , oldLink);
  oldLink.parentNode.removeChild(oldLink);
}
于 2012-10-04T21:14:48.510 に答える
2

それ以外の

document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1')
document.write(document.getElementById(preview_div_ID).innerHTML);

そのはず

document.getElementById(preview_div_ID).innerHTML = document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1')
于 2012-10-04T21:12:11.197 に答える
0

これは、JS が HTML から DOM 要素を作成できるようにすることで解決できます。私の答えでは、簡単にするためにjQueryを使用します。

var $code = $('<h5 style="line-height: 9px; margin: 2px; ">
            <span style="font-size: 7px; line-height: 8px; ">
                Ost- (caseous) <a class="tag_link" href="javascript:;" onclick="open_tag(\'nekros\', this);">nekros</a>
            </span>
        </h5>');

$code.find('a').replaceWith(function () {
    return $(this).text();
});

このコードはテストされていないことに注意してください

于 2012-10-04T21:13:58.933 に答える