在页面之间保留JavaScript值

时间:2012-08-14 14:13:40

标签: javascript html cookies static

我正在尝试使用HTML和JavaScript在网页上创建测验。每个问题(有4个选项可供选择)是一个单独的html文件,但使用相同的JavaScript文件来评估输入的选择是对还是错。

但是,我很难找到一种方法来跟踪用户提供的正确答案数量,以计算他/她的分数。

是否有方法在JavaScript中创建静态或类似静态的变量?涉及cookie的解决方案也很受欢迎。

6 个答案:

答案 0 :(得分:5)

一种可能的解决方案是将问题文件中的HTML加载到父页面中,但在该页面上进行整个测验。这样,您仍然可以灵活地为每个问题提供不同的页面,但对于浏览器,它们都是一页。此外,在Javascript中创建或记录的任何变量都将在整个测验中持续存在。

使用Jquery的.load函数相当容易。您的页面中间有一个div,可以从您导航到的任何HTML页面加载其内容。

请记住,我很容易进入Javascript并更改正确答案的数量。事实上,任何客户端解决方案都存在这个问题。如果这不仅仅是有趣的,而且准确性很重要,您可能希望在每个问题之后将结果发送回服务器。这样,无论你如何实施测验,结果都会持续存在。

答案 1 :(得分:2)

看看http://www.electrictoolbox.com/jquery-cookies/ 这使您可以轻松设置和读取cookie。

答案 2 :(得分:1)

您可以将数据保存在Cookie中。但是,用户可以更改cookie并产生更好的结果。在这种情况下,使用会话是更好的选择。因为你在客户端存储的任何东西都是不安全的。

然而,最好用xhr以json格式提问并在浏览器中显示它们并将轨道保留在内存中

答案 3 :(得分:0)

如果您正在开发HTML5应用程序,您可能希望调查DOM存储工具,例如localStoragesessionStoragehttps://developer.mozilla.org/en-US/docs/DOM/Storage

以下是一些有用的资源/信息:

http://ejohn.org/blog/dom-storage/

http://viralpatel.net/blogs/introduction-html5-domstorage-api-example/

http://msdn.microsoft.com/en-us/library/cc197062(v=vs.85).aspx

答案 4 :(得分:0)

这些天我会专注于使这个单页应用程序,而不是依赖页面加载。这不仅具有解决问题的优势,还意味着为用户提供更快速,更快速的体验。

如果您必须使用页面转换,并且您很乐意仅使用现代浏览器,请查看 localStorage 。比cookie更容易使用和更灵活 - 它就像序列化的JavaSCript对象一样工作。

答案 5 :(得分:0)

这是http://rhaboo.org的案例。看看这个小提琴:

http://jsfiddle.net/rhaboo/qp6zsnmx/6/

正如您所看到的,整个测验只是一系列问题,其中一些问题有答案,而且这些答案通过点击它们来改变。测验数组一直存在于rhaboo提供的持久对象中。与非持久性代码的唯一区别在于,您通常会在哪里写:

store.test[i].chosen = j;

你必须写:

store.test[i].write('chosen', j);

代替。顺便说一句,我写了rhaboo。