发表于: 2017-04-22 21:40:20

1 521


2017-04-22 Day032

今天完成的事情

完成任务2

明天计划的事情

  1. 1. 学习正则表达式
  2. 2. 理解面向对象语言的概念:对象,对象的属性,对象的方法,继承和多态

遇到的问题

  1. 1. 输入框中输入的数字变化时,杀手和平民的数量实时计算输出:
    刚开始并没有注意到这个功能,只是在点击发牌的时候才会判断和计算,并输出到显示位置
    a. 开始使用了onblur()失焦事件来触发判断和计算,但是失焦事件只有在光标离开输入框之后才开始判断计算并显示,这和要求不符;
    b. 查找js事件表,找到onkeyup事件,当按下的任意键弹起时触发判断和输出,问题解决。

  2. 2. 使用了上面的方式实现计算,点击发牌将得到的杀手和平民数量存储到浏览器,但是,点击发牌后结果一闪而过,并没有保持显示在页面当中
    解决
    a. 首先检查保存函数执行有无异常:

function save() {
   sessionStorage.setItem("killerN", killerNum);
   sessionStorage.setItem("commonN", commonNum);
   console.log(sessionStorage.getItem("killerN")+
       "_" + sessionStorage.getItem("commonN"));
}

输入:15
输出:4_11
b. 可见存储并没有问题,但是这里注意到一个问题,js文件执行完后,回到html文件中,在html文件执行到最后,跳到jquery.min.js文件中,,这是引入bootstrap时引入的,并没有发现这个文件中有什么异常,执行完后页面中记录的杀手和平民数量就消失了;


c. 于是尝试将这个jq文件注释,运行,得到同样的结果,显然不是由于jq导致的;
d. 检查触发事件函数,onclick(),未发现错误;
e. 检查html文件,未发现异常;
f. 无奈,求救师兄,得到解答,原来由于input的属性设置为type="submit",submit属性在提交表单内容后刷新页面,所以刚显示出来的数据就“刷”的一下,it's gone...

g. 所以只需要将input属性设置为type="button";就可以了撒


收获

正则表达式
var re = new RegExp("a", "i");
var re = /a/i
//"a","i"
//\

字符类

\w 匹配任何ASCII单字符[ a-z A-Z 0-9];
\W 匹配任何ASCII字符之外的字符
\s 匹配任何Unicode空白字符 :空格
\S 匹配任何Unicode空白字符之外的字符
\d 匹配任何数字 [ 0-9 ]
\D
[...] 匹配方括号中的所有字符
[^...] 匹配非方括号中的所有字符

重复类

{n} 匹配前一项n次
var re = /a{n}/i 匹配aaa
{n,}匹配前一项至少一次,最多不限
{n, m}匹配前一项至少n次,最多m次
{?}匹配前一项0次或者1次
{+}匹配前一项至少一次
{0}匹配前一项0次或者多次

定位符

^ 匹配字符串的开头
$ 匹配字符串的结尾
\b 匹配一个单词的边界
\B 与\b相反,匹配一个非单词边界

分组

(...) 将几个项目组成一个单元
(?...) 与(...)类似 只是不记忆与该组合所匹配的内容

标志

i 匹配时不区分大小写
g 匹配时执行全局匹配
m 匹配时执行多行匹配

正则表达式对象的方法

exec() 执行正则表达式的匹配,返回一个数组
test() 测试正则表达式的匹配,返回布尔值
toSource() 返回RegExp对象的源码
toString() 将RegExp对象转换成字符串


返回列表 返回列表
评论

    分享到