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

时间:2019-02-21 13:48:52

标签: javascript html

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

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

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

我最初尝试的方法是:

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

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

有什么想法可以在纯JS中实现吗?

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

您可以使用正则表达式

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);

答案 2 :(得分:0)

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

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

.forEach() NodeList上有关于.querySelectorAll()的{​​{3}}

答案 3 :(得分:0)

尝试一下

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>