Ven*_*zhi 5 html javascript query-string
重定向到home.html页面后,我可以看到我在上一页中给出的查询字符串值.
Home.html?FirstName=dd&LastName=ee&smtButton=Submit
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
firstname = undefined
lastname = undefined
age = undefined
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题?
JS:
function getParams() {
var idx = document.URL.indexOf('?');
var params = new Array();
if (idx != -1) {
var pairs = document.URL.substring(idx + 1, document.URL.length).split('&');
for (var i = 0; i < pairs.length; i++) {
nameVal = pairs[i].split('=');
params[nameVal[0]] = nameVal[1];
}
}
return params;
}
params = getParams();
firstname = unescape(params["firstname"]);
lastname = unescape(params["lastname"]);
age = unescape(params["age"]);
document.write("firstname = " + firstname + "<br>");
document.write("lastname = " + lastname + "<br>");
document.write("age = " + age + "<br>");
Run Code Online (Sandbox Code Playgroud)
在你的函数内部,function getParams()你被声明为变量var params = new Array();,我认为这会让你感到困惑
如果找到匹配项,则指定了url param params[nameVal[0]] = nameVal[1];,这实际上并没有将值添加到数组对象中.所以params.length是0.但它将作为数组是对象的实例..即params instanceof Object是true
所以换成基本对象..避免混淆
function getParams() {
var idx = document.URL.indexOf('?');
var params = {}; // simple js object
.. here goes other code
}
Run Code Online (Sandbox Code Playgroud)
和对象键区分大小写,因此FirstName将工作..
firstname = unescape(params["FirstName"]);
Run Code Online (Sandbox Code Playgroud)
要打印所有值,请尝试此操作
params = getParams();
for( var i in params ){
console.log( i , params[i] );
}
Run Code Online (Sandbox Code Playgroud)
它会打印出来
FirstName dd
LastName ee
smtButton Submit
Run Code Online (Sandbox Code Playgroud)
我修改了你的getParams代码
function getParams() {
var params = {},
pairs = document.URL.split('?')
.pop()
.split('&');
for (var i = 0, p; i < pairs.length; i++) {
p = pairs[i].split('=');
params[ p[0] ] = p[1];
}
return params;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31560 次 |
| 最近记录: |