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 调用开始吐出数据。我很好。

全部发送。

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 回答