小看了setTimeout()
来源:cssrain 发布时间:2009-12-04 12:44:00
今天做项目时,有一个这样的需求,需要动态删除的Tab,比如:可以删除某一个,可以删除多个。
每一个Tab对应一个iframe。
本来我的代码是这么写的:
//...前面代码省略
eqdiv.children("iframe")[0].contentWindow.location.replace("about:blank");
eqdiv.remove();
//...后面代码省略
上面的代码可以实现删除。但我突然奇思妙想,给remove()来个setTimeout吧,自己的内心总觉得延迟个50毫秒执行好些,于是把代码改为:
//...前面代码省略
setTimeout(function(){
eqdiv.children("iframe")[0].contentWindow.location.replace("about:blank");
eqdiv.remove();
},50);
//...后面代码省略
改了后,当时也没仔细测试,后来终于被测试员找出问题,夜晚2点被叫到公司找bug。。。
于是我慢慢找bug,发现有如下情况:
在单独关闭一个Tab时,没有问题。
在同时关闭多个Tab时,问题来了。于是我对删除Tab的代码进行了一句句调试,终于找出问题所在。
最终代码还是之前的:
//...前面代码省略
eqdiv.children("iframe")[0].contentWindow.location.replace("about:blank");
eqdiv.remove();
//...后面代码省略
之后仔细一想,的确setTimeout在做循环删除时,会有问题。
举个很简单的例子:
var a = $("#t");
$("<p>1</p>").appendTo(a);
setTimeout(function(){
$("<p>2</p>").appendTo(a);
},500);
$("<p>3</p>").appendTo(a);
运行结果肯定是: 1 , 3 , 2
但我脑子里 当时 怎么就忘记setTimeout() 的这个特性了呢 , 循环时真的要注意啊 。
猜你喜欢
- 不同的开发工具,都能俘获各自的一批忠实的用户和支持者。VS Code、Eclipse、IDEA、atom....到底哪一款开发工具更好?一直
- 在前一文中记述了Access启动不了,或者出现“正在准备安装……”的问题,今天则找到了Access对控件支持的问题。本来Access、Exc
- 效果图如下所示: 前言嗨,说起探探想必各位程序汪都不陌生(毕竟妹子很多),能在上面丝滑的翻牌子,探探的的堆叠滑动组件起到了关键的作
- 采用numpy快速将两个矩阵或数组合并成一个数组:import numpy as np数组a = [[1,2,3],[4,5,6]]b =
- 第二次修改models.py以后再次python manage.py makemigrations提示如下You are trying to
- 如下所示:import tensorflow as tftfe = tf.contrib.eagertf.enable_eager_exec
- 从ASP初入门到PHP,感觉到PHP的强大之一就是内置函数的丰富,比如先前学习的PHP日期时间函数,读写文件的相关函数等都无不表明了PHP的
- doctest库就是一个测试用的标准库,从意义上我们可以看出是关于测试有关系的,基本上就是测试是否和自己想要的结果是否一致,经常能在编写文档
- 前言:今天带大家使用JavaScript定制一款网页时钟一、效果展示二、使用的技术主要使用了js的日期对象,实现的时候先创建一个日期对象,并
- 一.思路1.整体思路2.代码思路思路很简单,就是用python发送请求,提取响应体中的状态码加以判断,最后保存到本地txt文本中,以实现网站
- Python官方文档给出的解释是id(object)Return the “identity” of an object. This is
- 1、安装 python3sudo apt install python32、卸载 python2.7 (可选)sudo apt remove
- 本文实例为大家分享了python读取图片并修改文件大小的具体代码,供大家参考,具体内容如下# Author:NDK# -*- coding:
- 简单说明这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。简称kNN。已知:训练集,以及每个训练集的标签。接下来:
- 1、获取元素 2、获取数据 3、绑定数据 4、隔行换色&
- 这样就将你所有微信好友的信息都返回了,我们并不需要这么多的信息,我们选取一些信息存储到 csv 文件中注意:返回的信息是一个 list,其中
- 测试数据 http://grouplens.org/datasets/movielens/协同过滤推荐算法主要分为:1、基于用户。根据相邻用
- 一、前言想必大家都玩过贪吃蛇的游戏吧:通过操纵蛇的移动方向能够让蛇吃到随机出现的食物,吃到的食物越多,蛇就会变得越长,但如果不小心撞到了自己
- 一、线程基础以及守护进程线程是CPU调度的最小单位全局解释器锁全局解释器锁GIL(global interpreter lock)全局解释器
- 进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,