今天完成的事情:
1、js1的代码改好,师兄提出的开始闪按钮能连续点击,而且连续点击后,点击结束闪按钮不能结束九宫格颜色的变化。
修改的思路是:1、对开始闪按钮在周期函数里对它设置disabled=true; 使它再点击开始闪按钮后不可选,而且从新设置了他的cursor:wait;
2、修改了html 代码和js代码,html里不会出现js相关的东西。实现了分离。
2、写出了js2的玩家配比页面,不过js的内容还没有完成。
明天计划的事情:
1、尽力完成js2.
遇到的问题:
收获:
js1的深度思考:
1.JS有哪些数据类型和常用方法?
js 有5种基本的数据类型。分别是 Boolean Number String Undefined Null
null值代表一个空对象指针。
Boolean类型有2个字面值 true false (需小写)。方法有转型函数Boolean()——将其他值转换为对应的Boolean值。
可以转化为true的有:非空字符串、非零数字值(包括无穷大)、任何对象
可以转换为false的有:空字符串、数字0和NaN、null、undefined
Number类型
1、数值自面量格式有:十进制、8进制、16进制
其中8进制第一位必须是0,然后是8进制数字序列(0~7);
其中16进制第一位必须是0x,然后是16进制数字序列(0~9及A~F);
在进行算数计算时,8进制和16进制数值都会被转换为10进制数值进行计算。
2、isFinite() 这个方法用来判断一个数值是否在+Infinity 和-Infinity 之间,是的话返回true。
3、NaN与任何值都不想等,包括NaN本身。
4、把非数值转换为数值的方法:Number()、parseInt()、parseFloat().
其中Number()可以用于任何数据类型。而后俩个只能用字符串类型。
String类型
1、把值转换为字符串的方法。
1、toString() ———null和undefined没有这个方法。2、String()该函数能将任何类型的值转化为字符串。3、使用+操作符,把该值与一个字符串相加。
1种复杂的数据类型:Object
2.定时器有哪些用法?
JS中有两个定时器,setTimeout和setInterval
window.setTimeout(expression,milliseconds); window.setInterval(expression,milliseconds); 其中,expression可以是用引号括起来的一段代码,也可以是一个函数名,到了指定的时间,系统便会自动调用该函数,当使用函数名作为调用句柄时,不能带有任何参数;而使用字符串时,则可以在其中写入要传递的参数。 window.setTimeout("fun(num1,num2)",1000);
当需要传参时,必须使用字符串形式。
两个方法的第二个参数是milliseconds,表示延时或者重复执行的毫秒数。
setTimeout
定义
在指定的延迟时间之后调用一个函数或执行一个代码片段。
let timeID = setTimeout(func,delay);
第一个参数为回调函数,第二个参数为延时的时间,
setTimeout方法的返回值是一个数字,为该定时器的ID,这个ID是定时器的唯一标识,用clearTimeout(timeID)可以消除该定时器。
我们可以使用window.setTimeout或setTimeout,两个写法基本一样,只不过window.setTimeout将setTimeout函数作为全局window对象的一个属性来引用。
setInterval
定义
周期性地调用一个函数(function)或者执行一段代码。
语法和setTimeout一样
如果想要取消定时执行,和clearTimeout方法类似,可以调用window.clearInterval方法。
clearInterval方法同样接收一个setInterval方法返回的值作为参数。
例如: //定义一个反复执行的调用 var id=window.setInterval("somefunction",10000);
//取消定时执行 window.clearInterval(id);
关于第二个参数delay
另外javascript都是以单线程的方式运行于浏览器的javascript引擎中,实际应用中复杂的任务中需要排队执行,这就可能导致定时器时间不准,
由于javascript 的事件循环机制,导致第二个参数并不代表延迟delay毫秒之后立即执行回调函数,而是尝试将回调函数加入到事件队列。实际上,setTimeout 和 setInterval 在这一点上处理又存在区别:
- setTimeout:延时delay毫秒之后,啥也不管,直接将回调函数加入事件队列。
- setInterval: 延时delay毫秒之后,先看看事件队列中是否存在还没有执行的回调函数(setInterval的回调函数),如果存在,就不要再往事件队列里加入回调函数了。
所以,当我们的代码中存在耗时的任务时,定时器并不会表现的如我们所想的那样。
3.ID和Class有什么区别?
ID是表示着标签的身份有唯一性,Class 在程序中称“类”,
在CSS里的ID不一定为JS而设置的,但是同样ID在页面里也只能出现一次,并且是唯一性。
区别:
1、在CSS文件里书写时,ID加前缀"#";CLASS用"."
2、id一个页面只可以使用一次;class可以多次引用。 3、对于CSS而言,id和class都是选择器,唯一不同的地方在于权重不同。id的优先级较高。
4、对于html而言,id和class都是dom元素的属性值。不同的地方在于id属性的值是唯一的,而class属性值可以重复。
5、id还一个老特性是锚点功能,当浏览器地址栏有一个#xxx,页面会自动滚动到id=xxx的元素上面。
总的来说:css只用class来写并有专门的class通用和私有模块命名,id具有唯一性且优先级太高只作为js操作dom的挂钩全部不添加样式。
4.F12Console的用法,以及如何Debug程序
一 什么是 Console
Console 是用于显示 JS和 DOM 对象信息的单独窗口。并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中。
二 为什么不直接使用 alert 或自己写的 log
使用 alert 不是一样可以显示信息,调试程序吗?alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死。而且 alert 显示对象永远显示为[object ]。 自己写的 log 虽然可以显示一些 object 信息,但很多功能支持都没有 console 好。
Console的方法比较多,在这里就不一一介绍了。
评论