获取查询字符串值并将其显示在我的html页面中

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)

rab*_*rab 5

在你的函数内部,function getParams()你被声明为变量var params = new Array();,我认为这会让你感到困惑

如果找到匹配项,则指定了url param params[nameVal[0]] = nameVal[1];,这实际上并没有将值添加到数组对象中.所以params.length0.但它将作为数组是对象的实例..即params instanceof Objecttrue

所以换成基本对象..避免混淆

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)