Tab标签js切换高效率写法
原来的传统写法:
function tabit(id,cid) {
for(var i=0; i<10; i++){
gi(["tab"+i]).className = "taboff";
gi(["ctab"+i]).style.display = "none";
}
gi(id).className="tabon";
gi(cid).style.display="block";
}
原理:用for循环将全部的tab置为不显示,然后循环结束后,把指定的那个tab置前即可。
这样做效率极低,另外受tab个数限制。
我初次接触这种切换问题的时候,就提出一种临时存储记忆法,可以比这种传统循环的算法效率高很多,实现起来也非常简单:
var lastTab; //临时存储上次时的tab ID值
function tabit(cid) {
//如果上次有存储值,且和本次请求切换的是同一个,那么直接提前结束
if( lastTab && lastTab == cid)
return;
//否则,改变上次的tab状态为隐藏状态,并且置换本次请求的tab为当前状态
/*这里要注意考虑第一次触发这个函数的情况,因为这个时候lastTab是undefined,所以直接查找id对应的元素肯定会报js错误的*/
if( lastTab) {
gi(lastTab).className = "taboff";
gi(lastTab).style.display="none";
}
gi(cid).className="tabon";
gi(cid).style.display="block";
//最后将本次的tab记录下来以备下次切换使用
lastTab = cid;
}
//根据id获取对应的元素对象
function gi(id) {
return document.getElementById(id);
}
我的这个版本的算法原理是:用一个变量临时存储最后一次请求切换的Tab id,这个时候,如果有下一次的切换请求,那么就跟上次请求的记录进行对比,如果相同,则不进行切换,直接结束,否则进行切换本次的tab状态和上次的tab状态即可。
这样一来没有做重复无意义的工作,二来效率高,且不受tab个数的限制,就算有10000个tab进行切换,处理的速度还是跟处理2个tab切换的速度一样的高。
Tab标签js切换高效率写法的更多相关文章
- 在Bootstrap开发中解决Tab标签页切换图表显示问题
在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其 ...
- JavaScript实现Tab标签页切换的最简便方式
转载请注明出处:http://www.cnblogs.com/-867259206/p/5664896.html 先说一下最土的一种方法: Html: <div class="tab- ...
- 简单实现tab标签页切换
常见面试题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- JS特效之Tab标签切换
在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了JS后,开始要写出一些简单的特效.今天我也分享一个简单tab标签切换的例子.先附上代码: HT ...
- 很好用的Tab标签切换功能,延迟Tab切换。
一个网页,Tab标签的切换是常见的功能,但我发现很少有前端工程师在做该功能的时候,会为用户多想想,如果你觉得鼠标hover到标签上,然后切换到相应的内容,就那么简单的话,你将是一个不合格的前端工程师啊 ...
- Vue指令:v-for的用法;v-bind绑定class的几种写法;tab标签切换
一.v-for 的用法 循环指令,可以遍历 Number.String.Object.Array: 循环数字.字符串:有2个参数,分别是value和索引值: 循环对象:有3个参数,分别是 属性值.属性 ...
- JS 实现 Tab标签切换功能
Tab标签切换 效果图: HTML部分: <div class="wrap"> <ul id="tag"> < ...
- 多iframe使用tab标签方式添加、删除、切换的处理实例
紧接着上一篇随笔iframe的内容增高或缩减时设置其iframe的高度的处理方案 如果采用iframe来切换显示内容的方式来展现办公Web.那么需要解决几个问题 1.tab标签需要和显示的iframe ...
- JS实现标签页切换效果
本文实例为大家分享了JS标签页切换的具体代码,供大家参考,具体内容如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...
随机推荐
- 实验楼 -- (Linux)
1. 允许用户SSH登陆 # 打开ssh配置文件, 一般在/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config # 在文件最后添加: # 其中shiya ...
- MyBatis-plus 代码生成器
1.添加pom文件依赖 <!-- Mybatis-Plus 自动生成实体类--> <dependency> <groupId>com.baomidou</gr ...
- Java NIO系列教程(六) 多路复用器Selector
多路复用器Selector是Java NIO编程的基础,熟练地掌握Selector对于掌握NIO编程至关重要.多路复用器提供选择已经就绪的任务的能力.简单来讲,Selector会不断地轮询注册在其上的 ...
- Oracle 琐表和查询谁在琐表并解决
Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容. (1)锁表查询的代码有以下的形式: select coun ...
- 开篇/javascript基础知识点
html css js 分别是一个网站的:内容 样式 行为: js 的三种样式:行内 内嵌 外链. 函数的特性:1.可以重复执行的代码块.2.不调用不执行.3.要访问里面,必须先执行. 内置对象:j ...
- 使用ADO.NET查询和访问数据库
使用ADO.NET查询和访问数据库步骤 使用ADO.NET查询和访问数据库 连接数据库操作: 1. 定义连接字符串: String connString = "Data Sour ...
- php数组排序和查找的算法
1.php算法 // 算法 // 1.冒泡排序 => 思路:每次循环排列出一个最大的数 // echo '<pre>'; $arr = [ 1,43,54,62,21,66,32, ...
- alpha-咸鱼冲刺day1
一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展 登陆界面随意写了一下.(明天用来做测试的) 把学姐给我的模板改成了自家的个人主页界面,侧边栏啥的都弄出来了(快撒花花!) 四,问题 ...
- Socket程序从windows移植到linux下需要注意的
)头文件 windows下winsock.h或winsock2.h linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in. ...
- 每日冲刺报告--Day2
敏捷冲刺每日报告--Day2 情况简介 今天我们三个人在一起开了会,分析了我们面临的情况以及下一阶段的计划.一个重大的改进是,我们准备把之前用txt文件格式存储订阅列表改成了文件json格式. 任务进 ...