1:js中的运算问题
js中变量的声明:如果在 var 语句中没有初始化变量,变量自动取 JavaScript值 undefined。尽管并不安全,但声明语句中忽略 var 关键字是合法的 JavaScript语法。这时,JavaScript解释器给予变量全局范围的可见度。当在过程级中声明一个变量时,它不能用于全局范围;这种情况下,变量声明必须用 var 关键字。
如果是两种不同数据类型的对象进行运算,JavaScript解释器自动将数据类型之一改变(强制转换)为另一种数据类型,然后执行运算
要想显式地将字符串转换为整数,使用 parseInt 方法。要想显式地将字符串转换为数字,使用 parseFloat 方法。请注意,比较大小时字符串自动转换为相等的数字,但加法(连接)运算时保留为字符串。
2:cookie以及session的问题
1) session在每次关闭浏览器后,客户端会清除该次session,而服务器端会保留一段时间;在重新打开浏览器会新建session,因此可以通过jsp的session.getId()方法来获取sessionID
2) 浏览器客户端的cookie直接通过document.cookie来获取,cookie有同名cookie;浏览器客户端以domain/path/name作为cookie的唯一标识,只要其中有任何一项不同,则cookie就是不同的,因此可以产生同名cookie
而cookie的domain和path在服务器端都是只写的,服务器端只能读取到name和value两个值,所以就会出现问题,当客户端向服务器端请求同名cookie时,服务器端会选择那个cookie返回值
测试结果表明:将返回最符合的当前domain和path中的一个
3:记录读书位置,由于有多本书,且针对不同用户,因此问题比较负责,解决该问题的思路过程如下
1) 利用cookie解决,在cookie中保存一个pos属性,遇到的问题是:阅读不同的书本时,pos会被改变,因此只能保存一本书的位置
2) 利用数据库解决,可以很好的保存所有书目的阅读位置,但存在重大的缺陷:数据库表格只有一份数据,若要对所有用户都实现该服务,则需要对不同用户创建不同的数据库表格
3) 基于上面两个尝试,依然使用cookie解决,但为每本书创建不同名的cookie,根据id来创建不同名的id
另外,window.scrollTo(x, y)函数需要事件来触发,这个问题挺奇怪的