我对HTML(以及一般的编程)相对较新,我正在尝试声明一个变量,并在导航到页面时为其赋值。我所拥有的是一行代码:
function() navigate {window.location = "myPage.html?myVar=1";}
当我运行该函数时,将加载新页面,但每当我尝试访问该变量时,我都会收到错误消息,指出变量未定义。但是,如果我在新页面中定义变量,例如<script>var myVar;</script>
,则该值将设置为null,而不是我尝试在之前使用的导航功能中将其设置为的值。
我无法想到任何解决方案,我的错误可能源于我对网址末尾?
如何运作的误解,但我找不到一个很好的解释无处不在。
答案 0 :(得分:0)
该功能写错了。检查您的JavaScript控制台是否有错误。以下是在javascript中编写函数的方法示例:
var navigate = function() { window.location = "myPage.html?myVar=1"; }
OR
function navigate() { window.location = "myPage.html?myVar=1"; }
我谨慎提醒,名称navigate
过于笼统。我会把它命名为navigateToMyPage
。
我重读了这个问题并意识到您正在寻找一种从网址获取参数的方法。
你会想做这样的事情:
var navigateToMyPage = function() { window.location = "myPage.html?" + location.search; }
以下是相关问题和解决方案: How to get the value from the GET parameters?
OR
如果你想传递一个javascript变量值,你可以这样做:
var myVar = 1 + 1;
var navigateToMyPage = function() { window.location = "myPage.html?myVar=" + myVar; }
祝你好运!
答案 1 :(得分:0)
查询字符串变量用于在我们请求页面时将数据传递到服务器,但您仍然可以使用javascript访问它们,请查看此Stackoverflow问题How can I get query string values in JavaScript?
答案 2 :(得分:0)
查询字符串 - 在客户端和服务器端
Javascript是一种客户端脚本语言,query string不会自动处理成变量。这通常由服务器端脚本语言完成,如PHP。
例如,在PHP的服务器端,通常会将查询字符串值自动分配给$_GET
数组,或者在这种情况下为$_GET['myVar']
。但在Javascript中并非如此,您需要自己处理查询字符串。
片段标识符 - 将网址值传递给Javascript
在Javascript中,通过网址传递值的最常用方法实际上是通过fragment identifier而而不是通过query string。
例如,您可以传递两个变量:
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']