簡體   English   中英

document.createElement('a')在此代碼中做什么?

[英]what does document.createElement('a') do in this code?

我找到了一些代碼來從URL中以?a=1&b=2的形式獲取參數,但是有些部分我不理解。

我可以在某種程度上算出最后一部分-他在“&”上分割字符串,然后在“ =”符號的任一側提取出部分。 我不太了解encodeURIComponent函數,我查了一下仍然很困惑。 但是,主要問題是以下三行:

var parser = document.createElement('a');
parser.href = window.location.href;
var query = parser.search.substring(1);

如何使不存在的元素起作用,為什么他可以進行parser.href以及為什么parser.search.substring(1)

完整代碼:

function get_params() {
    var params = {};
    var parser = document.createElement('a');
    parser.href = window.location.href;
    var query = parser.search.substring(1);
    var vars = query.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        params[pair[0]] = decodeURIComponent(pair[1]);
    }
 }

它創建一個<a>元素,其href屬性等於當前URL。 然后,查詢此元素以獲取GET查詢字符串。

但是,以下3行:

var parser = document.createElement('a');
parser.href = window.location.href;
var query = parser.search.substring(1);

可以替換為:

 var query = window.location.search.substring(1);
var parser = document.createElement('a');
parser.href = window.location.href;

上面的代碼創建一個html <a>標記,並在瀏覽器窗口中創建一個指向當前頁面的鏈接。

使用parser.search不起作用。 不知道那里發生了什么,或者為什么他們制作一個<a>元素只是為了在其上添加href。 這里有一些類似的東西會起作用:

function get_params() {
    var params = {};
    var href = window.location.href;
    href = href.substring(href.lastIndexOf("?"), href.length)
    var vars = href.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        params[pair[0]] = decodeURIComponent(pair[1]);
    }
}

至於decodeURIComponent ,URL編碼了一些字符以進行傳輸。 例如,空格由%20表示。 此函數將其解碼回常規字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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