我在html中做了一个小问题,有10个问题,每个问题都在一个单独的html页面中。在用户按下index.html中的START按钮时,我执行以下操作:
var s = new Date();
sessionStorage.start_test = s;
当他按下测验第10页的FINISH按钮时,我会这样做:
var e = new Date();
sessionStorage.finish_test = e;
最后,我有一个显示成绩的页面,以及回答测验所花费的时间,具有以下内容:
var start = sessionStorage.getItem( "start_test" );
var fin = sessionStorage.getItem( "finish_test" );
var time = fin.getTime() - start.getTime();
alert( time );
但这似乎不起作用,因为它没有显示javascript警告框,并且在控制台中我收到以下错误:
Uncaught TypeError: Object Wed Jul 09 2014 13:38:06 GMT+0200 has no method 'getTime'
我做错了什么?任何帮助将非常感谢!
答案 0 :(得分:3)
将Date对象添加到本地或会话存储时,它会被序列化为字符串,因此,当您使用getItem()
检索它时,会得到一个字符串。要将其转换回Date对象,请将此字符串传递给Date()
构造函数:
var myDate = new Date( localStorage.getItem( 'foobardate' ) );
答案 1 :(得分:1)
sessionStorage 是字符串,而不是 Date()实例。
var start = new Date(sessionStorage.getItem( "start_test" ));
var fin = new Date(sessionStorage.getItem( "finish_test" ));
var time = fin.getTime() - start.getTime();
alert( time );