我想删除所有以href="http:“开头的标签,并保留每个标签的文本链接。
在我的html文件中还有一些我根本不想更改的标签。同样,我只希望以http开头的标签与链接的文本留在原地。
本质上,我希望所有的外部链接从html文档中剥离出来,而内部链接保持完好。
如能帮助我们正确查找内容:并替换为:信息,我们将不胜感激!
发布于 2018-09-11 06:31:24
您可以删除不包含当前主机的所有标记:
const links = Array.from(document.getElementsByTagName('a'))
links.forEach(elm => {
!elm.href.includes(window.location.host) && elm.parentNode.removeChild(elm);
})<a href="https://google.com">google</a>
<a href="/about">about</a>
不需要JQuery
发布于 2018-09-11 06:09:11
一个解决方案可能是这样的
jQuery( document ).ready( function($) {
//stores all a tags in an array.
var aTags = document.getElementsByTagName("a");
var re = new RegExp("^http://");
var length = aTags.length;
for(var i = 0; i < length; i++) {
if( aTags[i].href.test(re) ) {
aTags[i].href = "https://" //reset to something else if true?
//OR
aTags[i].href.replace("http://", "https://"); //replace with https
}
}
});发布于 2018-09-11 08:09:52
以下JavaScript应将所有链接替换为包含以下内容的文本:
var links = document.getElementsByTagName("a");
var regEx = /^https?:\/\//;
for (var i = 0; i < links.length; i++)
{
var elem = links[i];
if (elem.href.test(regEx))
{
var node = document.createTextNode(elem.textContent);
elem.parentElement.replaceChild(node, elem);
}
}它循环遍历所有链接,如果它们以“http://”或“https://”开头,则用文本创建一个文本节点,该文本节点将替换该链接。
https://stackoverflow.com/questions/52266044
复制相似问题