3

我对 HTML(和一般编程)相对较新,我试图声明一个变量并在导航到页面时为其分配一个值。我所拥有的是这样的一行代码:

function() navigate {window.location = "myPage.html?myVar=1";}

当我运行该函数时,将加载新页面,但是每当我尝试访问该变量时,我都会收到一条错误消息,指出该变量未定义。但是,如果我在新页面中定义变量,例如<script>var myVar;</script>,该值将设置为 null,而不是我在之前使用的导航函数中尝试将其设置为的值。

我想不出任何解决方案,我的错误可能源于我对?url 末尾的工作原理的误解,但我无法很好地解释它在任何地方的工作原理。

4

3 回答 3

1

查询字符串变量用于在我们请求页面时将数据传递给服务器,但是您仍然可以使用 javascript 访问它们,请查看这个 Stackoverflow 问题How can I get query string values in JavaScript?

于 2013-02-02T21:06:31.360 回答
0

查询字符串 - 在客户端和服务器端

Javascript 是一种客户端脚本语言,不会将查询字符串自动处理为变量。这通常由服务器端脚本语言完成,例如 PHP。

例如,在 PHP 的服务器端,您通常会将查询字符串值自动分配给$_GET数组,或者$_GET['myVar']在这种情况下。但在 Javascript 中情况并非如此,您需要自己处理查询字符串。

片段标识符 - 将 URL 值传递给 Javascript

在 Javascript 中,通过 URL 传递值的最常见方式实际上是通过片段标识符不是通过查询字符串

例如,您可以像这样传递两个变量:

myPage.html#myVar=1&myOtherVar=2

在 JavaScript 中,location.hash变量将自动分配值#myVar=1&myOtherVar=2,您可以像这样进一步处理:

var location_vars = [];
var location_vars_temp = location.hash.replace('#',''); // Remove the hash sign
location_vars_temp     = location_vars_temp.split('&'); // Break down to key-value pairs
for (i=0; i < location_vars_temp.length; i++) {
    location_var_key_val = location_vars_temp[i].split('='); // Break down each pair
    location_vars[location_var_key_val[0]] = location_var_key_val[1];
}

此时location_vars将是一个填充有传递值的数组,您将能够使用location_vars['myVar']和引用它们location_vars['myOtherVar']

于 2013-02-02T21:21:32.627 回答
0

函数写错了。检查您的 javascript 控制台是否有错误。以下是在 javascript 中编写函数的方法示例:

    var navigate = function() { window.location = "myPage.html?myVar=1"; }

或者

    function navigate() { window.location = "myPage.html?myVar=1"; }

我提醒一下,这个名字navigate太笼统了。我会把它命名为navigateToMyPage.

我重新阅读了这个问题,并意识到您正在寻找一种从 url 获取参数的方法。

你会想做这样的事情:

    var navigateToMyPage = function() { window.location = "myPage.html?" + location.search; }

这是一个相关的问题和解决方案: 如何从 GET 参数中获取值?

或者

如果你想传递一个 javascript 变量值,你可以这样做:

    var myVar = 1 + 1;
    var navigateToMyPage = function() { window.location = "myPage.html?myVar=" + myVar; }

祝你好运!

于 2013-02-02T21:06:18.937 回答