在多个html页面之间共享一个variables

我有一个类的项目,创buildHTML页面(S)与JavaScript,而不使用任何服务器端通信,第一个是关于用户input一个特殊的数字。 在第一页中,教师必须input关于他的课程的信息和学生号码,然后在完成后点击下一页,打开一个新页面,询问每个学生的信息和成绩。 但是当从第一页改变到第二时,学生号码的variables变得不确定。 我正在使用这个部分

var snum; function savesnum(val){ snum =val;} 

而且还试过,

 var snum; function savesnum(){ snum = document.getElementById('stunb').value; } 

这是一个使用window.localStorage在两个html页面之间传递数据的例子。 由于同源策略,这将不适用于不同的域名。

该示例由jsfiddle.net上的两个页面组成,但您可以轻松地从本地文件系统提供这些文件。 无论哪种方式,在这个例子中都没有涉及服务器端通信。

第一页允许用户在textarea元素中input一些文本。 有一个保存button ,点击时将触发一个单击事件 ,执行保存处理程序(指定为addEventListener的第二个属性的匿名函数 ),获取用户input的文本并使用密钥mySharedData将其保存在localStorage中

第1页在jsfiddle

HTML

 <textarea id="input"></textarea> <div> <button id="save">Save</button> </div> 

使用Javascript

 /*jslint sub: true, maxerr: 50, indent: 4, browser: true */ (function (global) { document.getElementById("save").addEventListener("click", function () { global.localStorage.setItem("mySharedData", document.getElementById("output").value); }, false); }(window)); 

第二个页面从localStorage中的密钥mySharedData中调用已保存的文本,并将其显示在textarea

在jsfiddle上

HTML

 <textarea id="output"></textarea> 

使用Javascript

 /*jslint sub: true, maxerr: 50, indent: 4, browser: true */ (function (global) { document.getElementById("output").value = global.localStorage.getItem("mySharedData"); }(window)); 

这两个例子都被封装在一个匿名的闭包中,这个闭包立即被执行,并且我们将窗口对象传递给我们,然后我们引用这个窗口对象作为globalvariables。

最后,第一行是一个评论,但没有任何旧评论; 这是一个由jslint使用的指令; 一个用于javascript软件开发的静态代码分析工具,用于检查JavaScript源代码是否符合Douglas Crockford提出的编码约定 。

替代scheme是使用:

cookies ,再一次相同来源的政策将适用。

要么

URL 查询string ,这些string可能会在您进入下一页时使用的地址的一部分,在JavaScript中可以读取数据以获取数据。

当你打开一个新的页面或redirect到一个新的页面时,你是在一个新的窗口对象上,你不能把在第一个窗口对象上定义的“snum”作为一个全局variables。

在这种情况下,您可以将snum作为“get”参数单独传递给url,并在新窗口中获取参数。

看看使用cookies:

http://www.w3schools.com/js/js_cookies.asp

Cookie是存储在访客计算机上的variables。 每次同一台计算机用浏览器请求一个页面,它也会发送cookie。 使用JavaScript,您可以创build和检索cookie值。

 function savesnum(val) { document.cookie = 'snum:'+val; //Set the cookie } function getsnum() { var start = document.cookie.indexOf('snum:'); //Get the location of the cookie value var stop = document.cookie.indexOf(';'); //Get the end of the cookie value return document.cookie.substring(start+5, stop); //Return the value of the cookie (+5 because 'snum:' is 5 chars long) } 

当你写

 var snum; 

这只是创build一个Javascriptvariables。

它甚至不会将snum添加到同一页面的DOM(文档对象模型)。 这就是你想要做的(虽然在不同的页面上):

 document.getElementById('stunb').value; 

你可以调用getElementById()来得到一个DOM节点/元素,就像一个<p id="mainText">段落节点。 要将值从一个页面传递到另一个页面,您可以使用:

  • cookies
  • url参数(如google.com/search?q= 参数+值

还有其他的方法,但他们会需要一些服务器端代码。

在你的情况下,你可以通过如下的学生人数:

 <form action="nextPage.html"> Number of Students: <input type="text" name="snum" /> <input type="submit" value="Next" /> </form> 

nextPage.html

 <script type="text/script"> <!-- var snum = location.search.substr(location.search.indexOf("=")+1); alert(snum); // assumes snum will be sent as "nextPage.html?snum=10" //--> </script>