首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去除除以http开头的标记以外的所有<a>标记

去除除以http开头的标记以外的所有<a>标记
EN

Stack Overflow用户
提问于 2018-09-11 05:58:34
回答 3查看 46关注 0票数 0

我想删除所有以href="http:“开头的标签,并保留每个标签的文本链接。

在我的html文件中还有一些我根本不想更改的标签。同样,我只希望以http开头的标签与链接的文本留在原地。

本质上,我希望所有的外部链接从html文档中剥离出来,而内部链接保持完好。

如能帮助我们正确查找内容:并替换为:信息,我们将不胜感激!

EN

回答 3

Stack Overflow用户

发布于 2018-09-11 06:31:24

您可以删除不包含当前主机的所有标记:

代码语言:javascript
复制
const links = Array.from(document.getElementsByTagName('a'))
links.forEach(elm => {
  !elm.href.includes(window.location.host) && elm.parentNode.removeChild(elm);
})
代码语言:javascript
复制
<a href="https://google.com">google</a>
<a href="/about">about</a>

不需要JQuery

票数 2
EN

Stack Overflow用户

发布于 2018-09-11 06:09:11

一个解决方案可能是这样的

代码语言:javascript
复制
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
    }
}

});
票数 0
EN

Stack Overflow用户

发布于 2018-09-11 08:09:52

以下JavaScript应将所有链接替换为包含以下内容的文本:

代码语言: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://”开头,则用文本创建一个文本节点,该文本节点将替换该链接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52266044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档