效果演示
这个效果的制作是借助setTimeout的第三个参数。setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。它们在非IE(6-9)浏览器中还可以如下使用:
1 |
setTimeout( function (obj){ |
即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。
1 |
setTimeout( function (obj){ |
上次看到一个setTimeout的一个用法:
1 |
var arr = [1,9,2,8,3,7,4,6,4,5]; |
2 |
for ( var i = 0, len = arr.length; i < len; i++){ |
3 |
setTimeout( function (x){ |
虽然这个并不是什么好的用法,这里setTimeout的第三个参数主要得到了除IE外的系列浏览器的支持。
要让IE支持的话,可以按下面方法进行扩展:
03 |
if (!+[1,]){ //除IE外,!+[1,]都是返回false |
04 |
( function (overrideFn){ |
05 |
w.setTimeout = overrideFn(w.setTimeout); |
06 |
w.setInterval = overrideFn(w.setInterval); |
07 |
})( function (originalFn){ |
08 |
return function (code,delay){ |
09 |
var args = Array.prototype.slice.call(arguments,2); |
10 |
return originalFn( function (){ |
11 |
if ( typeof code == 'string' ){ |
14 |
code.apply( this ,args); |
如果有第三个参数,某些情况下的调用就可以方便的处理回调函数中当前对象的问题,写起来好看点。扩展一下Function,增加一个延时调用(参考而已):
01 |
function .prototype.delay = function (){ |
02 |
var args = Array.prototype.slice.call(arguments,0); |
03 |
setTimeout( function (fn){ |
04 |
fn.apply( '' ,args.slice(1)); |
10 |
fn.delay(1000, 'xesam' ); |
下面是模拟进度条的代码:
01 |
<script type= "text/javascript" > |
02 |
function Load(id,width){ |
03 |
this .ele = document.getElementById(id); |
04 |
this .indicator = document.createElement( 'div' ); |
05 |
this .width = (width > 0 && width) || 300; |
11 |
this .ele.style.width = this .width + 'px' ; |
12 |
this .ele.appendChild( this .indicator); |
13 |
var iStyle = this .indicator.style; |
15 |
iStyle.height = '100%' ; |
16 |
iStyle.background = '#ff5500' ; |
23 |
this .timer = setTimeout( function (obj){ |
24 |
var t = obj.indicator.data || 0; |
26 |
obj.indicator.style.width = t + 1 + 'px' ; |
27 |
obj.indicator.data = t + 1; |
30 |
clearInterval(obj.timer); |
35 |
clearTimeout( this .timer); |
38 |
var load_1 = new Load( 'loading' ,300); |
- 利用javascript:void(0)制作假的提交按钮替代button
在写html页面,我们很自然的在表单提交的地方采用button来作为提交按钮,但是,用<button type=”button”>按钮</button>作为提交代码会有个问题, ...
- JavaScript滚动条插件源码
这是过年的时候自己写的js滚动条插件的源码,做出的效果自己并不满意,正因为做的并不满意所以回头重新巩固和深入学习js,这个插件有如下几个不太满意的地方: 内容的过度效果,可以参阅QQ客户端最近会话列表 ...
- Odometer使用JavaScript和CSS制作数字滑动效果
Odometer是一个使用JavaScript和CSS技术,制作出数字上下滑动的动画效果插件,有点类似与我们的天然气的读数的动画效果,这个插件是轻量级的,压缩版本只有3kg,使用CSS3动画技术,所以 ...
- selenium - javascript - 滚动条
虽然WebDriver提供了操作浏览器的前进和后退方法,但对于浏览器滚动条并没有提供相应的操作方法.在这种情况下,就可以借助JavaScript来控制浏览器的滚动条.WebDriver提供了execu ...
- 使用javaScript和JQuery制作经典面试题:光棒效果
使用javaScript与jQuery添加CSS样式的区别和步骤 使用javaScript制作光棒效果 --首先是javaScript <script> $(function () { v ...
- javascript插件制作学习-制作步骤
原生JavaScript插件开发学习 自己制作的demo大家可以看下https://www.cnblogs.com/zimengxiyu/p/9814889.html 插件制作步骤: (一)构造函数 ...
- javascript滚动条之ScrollBar.js
ScrollBar.js是一个仅仅120行的滚动条JS插件,使用非常方便 详情阅读:https://git.oschina.net/wuquanyao/scrollbar.js/*========== ...
- javascript中setInterval制作跑马灯的效果
html代码: javascript代码 <script type="text/javascript"> function scroll() { var title = ...
- javascript简易日历制作
学习记录 01.练习数组的用法 02.理解this.index的用法 03.绑定事件深入练习理解 html代码 <div id="date"> <ul id=&q ...
随机推荐
- Linux命令应用大词典-第33章 X Window
33.1 xhost:X服务器的访问控制程序 33.2 xinit:X Window系统初始化 33.3 Xlsclients:在显示器中列出正在运行的客户端应用程序 33.4 xlsfonts:显示 ...
- Java初始化方法:类、容器
Java初始化方法:类.容器 初始化类(非final): Struts2的DefaultActionMapper类中: public DefaultActionMapper() { ...
- HashMap 阅读
最近研究了一下java中比较常见的map类型,主要有HashMap,HashTable,LinkedHashMap和concurrentHashMap.这几种map有各自的特性和适用场景.使用方法的话 ...
- 从零开始的Python学习Episode 2——运算符与while循环
一.算术运算符 加法:+,减法:-,乘法*,除法/,整除(地板除)//,取余%,乘方**. 二.逻辑运算符 且:and,或:or,非:not 优先级:not>and>or 短路原则: 对 ...
- RNN概述-深度学习 -神经网络
一 RNN概述 前面我们叙述了BP算法, CNN算法, 那么为什么还会有RNN呢?? 什么是RNN, 它到底有什么不同之处? RNN的主要应用领域有哪些呢?这些都是要讨论的问题. 1) BP算法 ...
- codeforces 303C. Minimum Modular(数论+暴力+剪枝+贪心)
You have been given n distinct integers a1, a2, ..., an. You can remove at most k of them. Find the ...
- DFS中的奇偶剪枝(技巧)
剪枝是什么,简单的说就是把不可行的一些情况剪掉,例如走迷宫时运用回溯法,遇到死胡同时回溯,造成程序运行时间长.剪枝的概念,其实就跟走迷宫避开死胡同差不多.若我们把搜索的过程看成是对一棵树的遍历,那么剪 ...
- 软件工程 part4 评价3作品 修改
作品1 抢答器 地址: https://modao.cc/app/ylGTXobcMU7ePNi6tY53gG4iraLl0md评价: 老师有意见,我重新评价,这个作品是我测试最方便的,地址点进去直接 ...
- Thunder团队第五周 - Scrum会议1
Scrum会议1 小组名称:Thunder 项目名称:i阅app Scrum Master:杨梓瑞 工作照片: 邹双黛在照相,所以图片中没有该同学. 参会成员: 王航:http://www.cnblo ...
- Java微笔记(3)
Java 中的 static 使用之静态变量 Java 中被 static 修饰的成员称为静态成员或类成员. 它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享. 静态成员可以使用类名直接访 ...