iT邦幫忙

1

JS怎樣取得網址內的路徑名稱?

  • 分享至 

  • xImage

我嘗試了很久,還是失敗,就是想取得網址內的路徑名稱!
就如這頁的網址:
https://ithelp.ithome.com.tw/questions/10256928
我之前使用JS

var url = window.location.pathname;
document.getElementById("urlPathName").innerHTML = url;

但得到結果是

/questions/10256928

但我想要的結果只需要 "questions" 那個字(我的情況"長度不定"、文字包括"數字和英文字")!

questions

在網上找了很久,絕大部份網站,都避免談及取得淨 Path Name 的做法。而我的用途是想在頁面顯示出,我在那個路徑裡?但因為不是整條Pathname,所以不知有什麼方法去除"/"及不需要的其它部份。實際網址情況如下:

http://localhost/topics/2022/A/333/test/9999/

我想求每個pathname的做法 ??‍?? ,本人不太懂得表達,請原諒!

Peter iT邦新手 4 級 ‧ 2022-01-25 09:24:35 檢舉
沒寫過JS,但你有考慮過使用 String.prototype.split() 的功能,指定 ' / '字符進行分割,然後在取得你想要的 pathname ?
MoMoDIYer iT邦新手 5 級 ‧ 2022-01-25 11:50:30 檢舉
無用過,但會立即學習一吓,看看能否合適!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
Felix
iT邦研究生 2 級 ‧ 2022-01-25 04:35:43

取得 Base Pathname 的方式:

const segs = window.location.pathname.split('/').filter(Boolean);

segs; // ['questions', '10207148']
segs[segs.length - 2]; // 'questions'

但是,不太清楚您所指「求每個 Pathname 的做法」是什麼意思。

MoMoDIYer iT邦新手 5 級 ‧ 2022-01-25 11:54:33 檢舉

我意思是想將每節都變成VAR的Value,方便HTML頁去引用顯示。以下面例子中的各Pathname:

http://localhost/topics/2022/A/333/test/9999/

就是找:topics、2022、A、333、test 和 9999

Felix iT邦研究生 2 級 ‧ 2022-01-25 18:58:11 檢舉

MoMoDIYer

如此,上方的 segs 不就是您想要的結果嗎?

2
Samuel
iT邦好手 1 級 ‧ 2022-01-25 14:19:08
var query = window.location.search;
console.log("window.location.search:" + query);
//window.location.search:?id=ffd2823a-f739-4678-98b6-a4d7dfc482fa
//var query0 = window.location.search.substring(0);
console.log("window.location.search.substring(0):" + query0);
//window.location.search.substring(0):?id=ffd2823a-f739-4678-98b6-a4d7dfc482fa
var query1 = window.location.search.substring(1);
console.log("window.location.search.substring(1):" + query1);
//window.location.search.substring(1):id=ffd2823a-f739-4678-98b6-a4d7dfc482fa
function getQueryGetParams(variable) {
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var idxVar = 0; idxVar < vars.length; idxVar++) {
                var pair = vars[idxVar].split("=");
                if (pair[0] == variable)
                    return pair[1];
            }
            return "";
        }
MoMoDIYer iT邦新手 5 級 ‧ 2022-01-25 18:06:07 檢舉

/images/emoticon/emoticon06.gif很深奧!理解唔到,我只是初學,很感謝您!

1
Genos
iT邦新手 3 級 ‧ 2022-01-26 18:22:09

如果沒有什麼例外狀況的話,下面這行的執行結果就是'questions'

window.location.pathname.split('/')[1]

全部路徑(陣列格式)

let pathSeg = window.location.pathname.split('/');
pathSeg.shift();

// 上面已經取得每個路徑的陣列,可以用forEach去執行想要的動作
pathSeg.forEach(......)

補充:如果網址中有 ?xxx=xxx 這種queryString的話可以一樣用split裁掉就好

我要發表回答

立即登入回答