最近两周突然被派了一个比较急的活,需要我做出几个页面,是展厅需要使用的新页面,对于不怎么会前端的我,兼职就是个巨大的挑战,以实战代学习,今天终于把页面做完了,总结一下熬过的这两周。
1.js中定时器的问题
要做出一些如轮播的动态效果,通过js写一个计时器必不可少,但其中有一个很重要的点要注意,无论是setTimeOut还是set。。。都是单线程执行的。
for( var i=0;i<3;i++){
setTimeout(function(){
console.log(i);
}
,300);
}
// 输出结果 3,3,3
输出结果并不是我们所预想的1,2,3
。当然,这个要涉及到setTimeout 的原理了,即使把300ms改成0ms,同样也会输出3,3,3
。具体可以查看博文 setTimeout(0) 的作用 。这里摘取其中一段说明。
JavaScript是单线程执行的,无法同时执行多段代码。当某段代码正在执行时,后续任务都必须等待,形成一个队列。只有当前任务执行完毕,才会从队列中取出下一个任务——也就是常说的“阻塞式执行”。
因此在遇上需要使用for循环+延时器的时候,就会出问题。解决方式如下
1.对使用延时器的函数使用递归
2.使用addEventListener去取代延时器,参考(https://www.jianshu.com/p/c64bfbcd34c3)
2.数字滚动特效写法学习
(http://www.htmleaf.com/jQuery/Layout-Interface/201807275248.html)
3.js的常见几种操作样式及标签的方法
4.页面中主要使用到的一些东西
- (‘获取元素’)animate.({修改位置及大小等属性}),用来进行动画转场、轮播等
- fadeIn和fadeOut实现渐入渐出
- 引入echarts,在js中进行柱状图、饼图等编写,实现图表
- 引入编写好的od分析工具页面,<iframe>标签引入
5.监听器
- 通过addEventListener(event,function,use capture)来监听时间,use capture为ture时是捕获阶段进行监听,false为冒泡阶段进行监听。
- 与之相对的removeEventListener(),不能匿名function进行监听删除。
- IE8之前的旧版本用attachEvent进行监听
6.js中的Array对象
- 是一个数组对象,可{“a”:“1”,...}放入,可用length获取长度,用prototype去操作属性属性和方法
- Array.prototype.slice.call(arguements)表示返回数组对象中的指定的数组