问题描述
我有一个目录列表脚本,该脚本输出各种组织的名称及其网站地址。 用户看到的网站链接看起来像或
为了使外观看起来更漂亮,我想删除链接的http://元素。 因此,从用户角度来看,最终结果应该以html的形式看起来像
编写和输出php脚本的方式使执行此操作有些麻烦,我认为使用某些javascript可能更容易完成。
我最初尝试过类似的方法:
<script>
var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("http://", "");
document.body.innerHTML = curInnerHTML;
</script>
但是,这是行不通的,因为它一直在寻找一个确切的字符串“ http://”,而该字符串将始终跟在实际的域之后。
知道如何在纯JS中完成此操作吗?
1楼
Amiratak88
1
2019-02-21 13:56:50
您需要一个正则表达式而不是字符串。 这样的事情。
curInnerHTML = curInnerHTML.replace(/^https?:\/\//i, "");
2楼
Mirakurun
0
2019-02-21 13:57:08
如果我对您的理解正确, 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);
3楼
Ito Pizarro
0
2019-02-21 14:04:03
如果您仅在寻找<a>
元素,并且仅尝试替换[用户]看到的文本内容:
document.querySelectorAll( 'a[href^="http"]' ).forEach( function ( current ) {
current.textContent = current.href.split('//')[ 1 ];
} );
关于.querySelectorAll()
NodeList上有关.forEach()
的
4楼
Stefan Avramovic
0
2019-02-21 14:10:30
尝试这个
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>