setTimeout的function带参数

setTimeout【注:out的‘o‘是小写】

如果setTimeout(function,mill)中的function带参数,则定义的毫秒树mill会失效,function方法会立即执行

解决方法:把参数定义为"全局变量"进行操作,或者不要单独写一个方法,直接再同一个方法内直接写function函数,例如本例中的第一个setTimeout;

例子1:

	var operations =[Object object,Object object,Object object,Object object,Object object];
	function sessionPlayback(){
		playControl(0);
	}
	function playControl(i){

		var operation = operations[i];
		var content = $("#operation_content").val();
		content+="#>"+operation.request;

		$("#operation_content").val(content);
		setTimeout(function(){
			var content = $("#operation_content").val();
			content+= operation.response+"\r\n";
			$("#operation_content").val(content);
		},eval((operation.endTime - operation.startTime)*playSpeed));

		i ++;
		if(i<operations.length){
			var jiangetime = 0;
			jiangetime = (operations[i].startTime - operations[i-1].startTime)*playSpeed;
			console.log("jiangetime:"+jiangetime);
			setTimeout("playControl("+i+")",jiangetime);
		}

	}

例子2:

	function playControl(){

		console.log("operations:"+operations);
		$("#operation_content").val("");

		for(var i = 0;i < operations.length;i++){
			var jiangetime = 0;
			if(i>0){
				jiangetime = operations[i].startTime - operations[0].startTime;
			}
			console.log("jiangetime:"+jiangetime);
			setTimeout("showOperationHistory(operations["+i+"])",jiangetime);
		}
		$("#operation_content").focus();
	}
	function showOperationHistory(operation){

		var content = $("#operation_content").val();
		content+="#>"+operation.request+"\r\n";//加换行

		console.log("--------------------");
		$("#operation_content").val(content);
		setTimeout(function(){
			var content = $("#operation_content").val();
			content+= operation.response+"\r\n";
			$("#operation_content").val(content);
		},eval(operation.endTime - operation.startTime));

	}

传递的参数尽量是字符串!

时间: 2024-08-20 17:09:22

setTimeout的function带参数的相关文章

JS中setInterval、setTimeout不能传递带参数的函数的解决方法

setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function test(){} setTimeout(test,1000) //带参数的函数,用匿名函数包装(可以实现动态传参) function onemodelanima(o, tobestatus, time, easing, origin){ if(easing == null){ easing = "&q

JS中setInterval、setTimeout不能传递带参数的函数的解决方案

在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法 在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决. 一.采用字符串形式:——(缺陷)参数不能被周期性改变 setInterval("foo(id)",1000); 二.匿名函数包装 (推荐) window.setInterval(

解决 js setTimeout 传递带参数的函数无效果

最近 js  用到 setTimeout 递归调用 刷新进度  setTimeout ("getProgress(name,type)", 3000) ; 发现getProgress函数 带上参数 就失效了,不带参数可以调用又达不到效果 解决办法:匿名函数包装  改成如下即可  setTimeout(function(){getProgress(name, type)}, 3000);   原文地址:https://www.cnblogs.com/ysx215/p/9057463.ht

带参数setTimeout

/*         功能:修改 window.setTimeout,使之可以传递参数和对象参数         使用方法: window.setTimeout(回调函数,时间,参数1,,参数n)     */     var _sto = setTimeout;     window.setTimeout = function(callback,timeout,param)     {         var args = Array.prototype.slice.call(argument

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

Python带参数的装饰器

在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passing_arguments(function_to_decorate): def a_wrapper_accepting_arguments(arg1, arg2): print("I got args! Look:", arg1, arg2) function_to_decorate(ar

微信服务器与项目服务器的交互(关注功能、微信扫描带参数二维码)

<?php /** * wechat php test */ //define your token define("TOKEN", "txtj"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallback

微信公众平台生成带参数二维码

<?php // +---------------------------------------------------------------------- // | 获取微信公众带参数二维码 // | Author: wzb [email protected] // +---------------------------------------------------------------------- namespace Mob\Controller; use Think\Contr

带参数二维码的使用

带参数二维码的使用 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module