簡體   English   中英

使用Javascript從鏈接文本中刪除前綴

[英]Removing prefixes from link text using Javascript

我有一個目錄列表腳本,該腳本輸出各種組織的名稱及其網站地址。 用戶看到的網站鏈接看起來像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中完成此操作嗎?

您需要一個正則表達式而不是字符串。 這樣的事情。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM