Eri*_*erg 1 javascript regex replace hyperlink
我正在使用此正则表达式尝试查找看起来像这样的链接,并仅用链接的开始和结束标记之间的内容替换它们.
正则表达式:
/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg
Run Code Online (Sandbox Code Playgroud)
我在示例代码上测试了正则表达式并且它可以工作,但是当我尝试将它应用于object.innerHTML时它不会替换任何东西.怎么了?
代码:
document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1');
document.write(document.getElementById(preview_div_ID).innerHTML);
Run Code Online (Sandbox Code Playgroud)
上面的"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>
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢
试试这个:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
它将遍历所有具有类名"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);
}
Run Code Online (Sandbox Code Playgroud)