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

时间:2019-02-12 16:11:34

标签: javascript createelement

我发现一些代码可以从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]);
    }
 }

3 个答案:

答案 0 :(得分:1)

它将创建一个my_list = ['0007', '7000'] final = set() for item in my_list: if item not in final and item[::-1] not in final: final.add(item) final = list(final) print(final) # output: ['0007'] 元素,其<a>属性等于当前URL。然后,查询此元素以获取GET查询字符串。

但是,这3行:

href

可以替换为:

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

答案 1 :(得分:0)

var parser = document.createElement('a');
parser.href = window.location.href;

上面的代码创建了一个HTML <a>标签,并在浏览器窗口中创建了指向当前页面的链接。

答案 2 :(得分:0)

使用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表示。此函数将其解码回常规字符串。