当前位置: 代码迷 >> JavaScript >> 使用Javascript从链接文本中删除前缀
  详细解决方案

使用Javascript从链接文本中删除前缀

热度:48   发布时间:2023-06-05 10:20:30.0

我有一个目录列表脚本,该脚本输出各种组织的名称及其网站地址。 用户看到的网站链接看起来像或

为了使外观看起来更漂亮,我想删除链接的http://元素。 因此,从用户角度来看,最终结果应该以html的形式看起来像

编写和输出php脚本的方式使执行此操作有些麻烦,我认为使用某些javascript可能更容易完成。

我最初尝试过类似的方法:

<script>
var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("http://", "");
document.body.innerHTML = curInnerHTML;
</script>

但是,这是行不通的,因为它一直在寻找一个确切的字符串“ http://”,而该字符串将始终跟在实际的域之后。

知道如何在纯JS中完成此操作吗?

您需要一个正则表达式而不是字符串。 这样的事情。

curInnerHTML = curInnerHTML.replace(/^https?:\/\//i, "");

如果我对您的理解正确, http://www.删除http://www. 从包含某些网站URL的字符串中获取。

你可以用正则表达式来做

let result = url.replace(/^(https?:\/\/)?(www\.)?/,'', '');

如果您只想剥离http://并保留www ,请使用此正则表达式

let result = url.replace(/(^\w+:|^)\/\//,'', '');

这是一个工作片段

 let url = "http://www.whatever.com"; let result = url.replace(/^(https?:\\/\\/)?(www\\.)?/,'', ''); console.log(result); 

如果您仅在寻找<a>元素并且仅尝试替换[用户]看到的文本内容:

document.querySelectorAll( 'a[href^="http"]' ).forEach( function ( current ) {
    current.textContent = current.href.split('//')[ 1 ];
} );

关于.querySelectorAll() NodeList上有关.forEach()

尝试这个

 function remove(){ var a = document.getElementById('target').getElementsByTagName('a'); var attr; for (var i = 0; i < a.length; i++) { attr = a[i].getAttribute("href").replace("http://", ""); a[i].text = attr; } } remove(); 
  <div id="target"> <a href="http://test1.com">http://test1.com</a> <a href="http://test2.com">http://test2.com</a> </div> 

  相关解决方案