document.createElement('a') 在此代码中做了什么?
what does document.createElement('a') do in this code?
我找到了一些代码来从 URL 中获取 ?a=1&b=2
形式的参数,但有些部分我不明白。
我可以在某种程度上算出最后一部分 - 他在“&”上拆分字符串,然后提取“=”符号两侧的部分。 decodeURIComponent函数我不是很懂,查了下还是一头雾水。不过,主要问题是这三行:
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]);
}
}
var parser = document.createElement('a');
parser.href = window.location.href;
上面的代码创建了一个html <a>
标签,并在浏览器window.
中创建了一个指向当前页面的link
使用 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 有一些字符编码用于传输。例如,space 表示为 %20
。此函数将其解码回常规字符串。
它创建一个 <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);
我找到了一些代码来从 URL 中获取 ?a=1&b=2
形式的参数,但有些部分我不明白。
我可以在某种程度上算出最后一部分 - 他在“&”上拆分字符串,然后提取“=”符号两侧的部分。 decodeURIComponent函数我不是很懂,查了下还是一头雾水。不过,主要问题是这三行:
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]);
}
}
var parser = document.createElement('a');
parser.href = window.location.href;
上面的代码创建了一个html <a>
标签,并在浏览器window.
使用 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 有一些字符编码用于传输。例如,space 表示为 %20
。此函数将其解码回常规字符串。
它创建一个 <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);