所有li标签中只有一个current,之前的方法是每一次事件都会遍历所有的li标签,结合闭包,使用变量记录移动前对应的li索引,即可简化排他过程。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script>window.addEventListener('load',function () {var allLis = document.getElementsByTagName('li');// 记录移动前选中li对应的索引var preSelectLiIndex = 0;for (var i=0;i<allLis.length;i++){(function (i) {var li = allLis[i];li.addEventListener('mouseover',function () {//清除allLis[preSelectLiIndex].className = '';//设置this.className = 'current';//赋值preSelectLiIndex=i;})})(i);}});
</script>
</body>
</html>

Javascript:利用闭包实现高级排他相关推荐

  1. 如果理解Javascript利用闭包循环绑定事件

    我们先看一个关于Javascript利用循环绑定事件的例子: 例如:一个不确定长度的列表,在鼠标经过某一条的时候改变背景. <!DOCTYPE html PUBLIC "-//W3C/ ...

  2. JavaScript中闭包实现的私有属性的getter()和setter()方法

    注意: 以下的输出都在浏览器的控制台中 <!DOCTYPE html> <html> <head><meta charset="utf-8" ...

  3. 一篇文章把你带入到JavaScript中的闭包与高级函数

    在JavaScript中,函数是一等公民.JavaScript是一门面向对象的编程语言,但是同时也有很多函数式编程的特性,如Lambda表达式,闭包,高阶函数等,函数式编程时一种编程范式. funct ...

  4. 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)

    JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...

  5. javascript使用闭包模拟私有属性和方法

    最近因为做了一个项目,其中涉及到了js私有方法,这个概念在其语言里面是很常见的,很多语言都有private这个关键字,只要在一个类的前面加上private就表示申明了一个私有方法,但是javascri ...

  6. 深入理解javascript的闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  7. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件

    初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript ...

  8. JavaScript:闭包

    在说JavaScript中闭包概念之前,我们先来了解一下作用域和变量生命周期的问题.作用域在前面的博客中有提到,大家可以点击查看一下,关于变量的生命周期,什么是生命周期?也就是变量从创建到销毁的一个过 ...

  9. JavaScript的闭包与应用

    为什么80%的码农都做不了架构师?>>>    (一)什么是闭包? 闭包就是函数的局部变量集合,只是这些局部变量在函数执行结束后会继续存在(仍然能被外部访问),即函数的"堆 ...

  10. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

最新文章

  1. SAP SD基础知识之组织结构
  2. IBM 内核惨败:20 亿美元打水漂 !
  3. 驱动阿里云的高性能网络引擎- 飞天洛神
  4. 编写程序计算交错序列_外文翻译 | FlyMC:高度可扩展地测试分布式系统中的复杂交错...
  5. 数据库mysql存储过程_[数据库]mysql存储过程的建立及使用
  6. EIGRP传递默认路由方法总结
  7. 深度学习(deep learning)优化调参细节(trick)
  8. 如何批量导出数据到excel并下载,看这一篇就够了,一看就会
  9. springboot内存占用过高问题排查 - jvm内存使用分析
  10. Annoying Present
  11. [SSL_CHX][2021-8-18]条件输出4
  12. 无线网卡无信号无服务器,无线网卡不能连接网络是什么原因?
  13. Spring Cloud Alibaba学习记录
  14. carte集群的搭建笔记
  15. mysql处理emoji表情_Mysql处理emoji表情
  16. 名单公布!支持这些高校,冲“双一流”
  17. qt下使用opencascade源代码
  18. matlab tic tac toe,详解Tic-Tac-Toe人工智能实现
  19. 计算机领域 世界级难题,“电脑垃圾”——一个世界性新难题阅读答案
  20. linux下使用c语言模拟tail [-n] 命令

热门文章

  1. 13. 永无止境:网站的伸缩性架构
  2. 35. 后台模块开发(2)
  3. JS中遍历普通数组和字典数组的区别
  4. How-to: Do Statistical Analysis with Impala and R
  5. Go语言【第五篇】:Go条件语句
  6. Hibdernate入门
  7. android studio ndk 开发入门
  8. centos 安装 Vagrant
  9. 经典排序算法(十二)--地精排序Gnome Sort
  10. C++11 std::ref()