我正在使用此正则表达式尝试查找看起来像这样的链接,并仅使用链接的开始和结束标记之间的内容替换它们。
正则表达式:
/<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>
非常感谢任何帮助
答案 0 :(得分: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);
}
答案 1 :(得分: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')
答案 2 :(得分: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();
});
请注意,此代码未经过测试