2017-04-18

写了个随机抽奖的小案例,打算随机跳动十次,每次变化的时间越来越长,也就是跳动的速度越来越慢,结果发现setInterval的时间参数并不会随着变化。

 <!--案例的结构如下-->
<body>
<button id="btn">开始抽奖</button>
<ul>
<li>一等奖</li>
<li>二等奖</li>
<li>三等奖</li>
<li>四等奖</li>
<li>五等奖</li>
<li>六等奖</li>
<li>七等奖</li>
<li>八等奖</li>
<li>九等奖</li>
</ul>
<!--简单的JavaScript代码如下-->
<script>
$(function () {
var oBtn = $('#btn');
var timer = null;
var oLi = $('li');
//点击按钮开始执行定时器
oBtn.click(function () {
clearInterval(timer);
var time = 10;
var speed = 100;
timer = setInterval(function () {
time--;
speed+=30;
//console.log(speed);
var index = Math.floor(Math.random()*oLi.length);
oLi.css('background','none');
oLi.eq(index).css('background','red');
if (time==0){
clearInterval(timer);
}
},speed)
})
})
</script>

后来想想改成setTimeOut(),然后加上回调,这样时间参数speed就能够每次获取到新的数值。script的代码修改为如下:

 <!--简单的JavaScript代码如下-->
<script>
$(function () {
var oBtn = $('#btn');
var timer = null;
var oLi = $('li');
//点击按钮开始执行定时器
oBtn.click(function () {
var time = 10;
var speed = 100;
timer = setTimeout(function () {
time--;
speed+=30;
console.log(speed);
var index = Math.floor(Math.random()*oLi.length);
oLi.css('background','none');
oLi.eq(index).css('background','red');
if (time){//time等于0就不再回调
timer = setTimeout(arguments.callee,speed);
}
},speed)
})
})

效果如下:

setInterval()的时间参数无法随参数的变化而变化的更多相关文章

  1. 使用自定义setTimeout和setInterval使之可以传递参数和对象参数

    转载自http://www.jb51.net/article/17859.htm /****************************************************** //  ...

  2. 修改 window.setTimeout,使之可以传递参数和对象参数

    /* 功能:修改 window.setTimeout,使之可以传递参数和对象参数 使用方法: setTimeout(回调函数,时间,参数1,,参数n) */ var _setTimeout=setTi ...

  3. 基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------> 可以返回派生类对象的引用或指针

      您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. ...

  4. Java中不定项参数(可变参数)的作用和使用方式

    引言: 我们在编写方法的过程中,可能会遇见一个方法有不确定参数个数的情况.一般我们会用方法重载来解决问题: //方法重载,解决参数个数不确定问题 public void method(); publi ...

  5. 性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

    堆内存溢出: 此种溢出,加内存只能缓解问题,不能根除问题,需优化代码堆内存中存在大量对象,这些对象都有被引用,当所有对象占用空间达到堆内存的最大值,就会出现内存溢出OutOfMemory:Java h ...

  6. .net 反射访问私有变量和私有方法 如何创建C# Closure ? C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密 C#中的foreach和yield 数组为什么可以使用linq查询 C#中的 具名参数 和 可选参数 显示实现接口 异步CTP(Async CTP)为什么那样工作? C#多线程基础,适合新手了解 C#加快Bitmap的访问速度 C#实现对图片文件的压

    以下为本次实践代码: using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  7. ORACLE 11GR2常用参数(含隐含参数)设置

    ORACLE 11GR2常用参数(含隐含参数)设置如下: alter system set "_PX_use_large_pool" = true scope=spfile;alt ...

  8. 【查阅】mysql配置文件/参数文件重要参数笔录(my.cnf)

    持续更新,积累自己对参数的理解 [1]my.cnf参数 [client]port = 3306socket = /mysql/data/3306/mysql.sockdefault-character ...

  9. request参数获取,参数校验,参数处理

    需求: 1.post接口,需要在过滤器中进行参数校验,校验通过之后再执行方法 2.原有代码中使用x-www-form-urlencoded传参,新需求要使用json格式 3.原有代码校验过滤器使用Se ...

随机推荐

  1. Tomcat、JBOSS、WebSphere、WebLogic、Apache等技术概述

    Tomcat:应用也算非常广泛的web服务器,支持部分j2ee,免费,出自apache基金组织   JBoss:开源的应用服务器,比较受人喜爱,免费(文档要收费)   Weblogic:应该说算是业界 ...

  2. linux服务器查看redis版本:

    linux服务器查看redis版本:redis-server-v

  3. php中查询mysql如何在IN array中用

    假如有一个数组 $arr = array(1,3,5,7,9)那么我在如何在php中使用mysqlWHERE id IN (1,3,5,7,9.......)$arr_string = join(', ...

  4. linux下修改Apache配置文件

    linux下修改host文件host文件存放路径 /etc/hosts 可以用vim编辑 //Apache配置虚拟主机 /usr/local/apache/conf/extra/httpd-vhost ...

  5. ci框架中输出sql语句

  6. JAVAEE学习笔记

    以后创建常量有三个名字:Constant   SystemParas   StaticValue 上限或者下限命名      max_    min_ 包含的范围命名     first      l ...

  7. static方法和非static方法的区别

    ●生命周期(Lifecycle):静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭. ...

  8. 13.什么是javabean,以及使用原则

    javabean简介 javabeans就是符合某种特定的规范的java类,使用javabeans的好处是解决代码的重复编写,减少代码 冗余,功能区分明确,提高了代码的维护性. javabean的设计 ...

  9. android studio 怎么将项目打包成apk文件

    1.Build -> Generate Signed APK...,打开如下窗口 2.假设这里没有打过apk包,点击Create new,窗口如下 这里只要输入几个必要项 Key store p ...

  10. Redis事务原理分析

    Redis事务原理分析 基本应用 在Redis的事务里面,采用的是乐观锁,主要是为了提高性能,减少客户端的等待.由几个命令构成:WATCH, UNWATCH, MULTI, EXEC, DISCARD ...