[英]Removing prefixes from link text using Javascript
我有一個目錄列表腳本,該腳本輸出各種組織的名稱及其網站地址。 用戶看到的網站鏈接看起來像http://www.whatever.com或http://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中完成此操作嗎?
您需要一個正則表達式而不是字符串。 這樣的事情。
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.