你运行一下代码会发现,无论你点击哪个列表,控制台都是输出10.这是因为var声明的变量是函数作用域的,而不是块级作用域的.也就是说,for循环10次,每次都是改变同一个i,所以它的值会从0一直加到10.还有个问题是闭包导致的,闭包保存的是外部变量的引用,而不是值.也就是说,循环10次监听器创建了10 个闭包,它们里面的i引用的是同一个啊.所以全部都指向了10. 要解决这个问题有两种方法.一种是使用ES6的let来替代 var i = 0 里面的var, 因为let支持块级作用域.改成如下就正常了…
var ul = document.querySelector("ul"); ul.addEventListener("mousedown", mouseHandler); function mouseHandler(e) { e.preventDefault(); if (e.target.nodeName !== "LI") return; var arr = Array.from(ul.children); var index = arr.…
<!DOCTYPE html> <html style="font-size: 24px"> <head> <title>js点击按钮显示再点击空白地方隐藏</title> <style type="text/css"> #div { border: 1px solid red; display: flex; align-items: center; justify-content: cente…
JQ版 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"> </script> <script> $(d…
jquery 实现重复点击一个元素时不重复执行效果 这需要用到jquery的stop方法 实例 停止当前正在运行的动画: $("#stop").click(function(){ $("#box").stop(); }); 定义和用法 stop() 方法停止当前正在运行的动画. 语法 $(selector).stop(stopAll,goToEnd) 参数 描述 stopAll 可选.规定是否停止被选元素的所有加入队列的动画. goToEnd 可选.规定是否允许完成…
树状结构列表,这个技术点之前有写过了,是基于vue讲解,但似乎都没有解决痛点,最基础的原生JS该怎么实现呢? 这篇文章会全面详细的介绍树状结构列表的实现,从数据处理成树状结构,到动态生成dom节点渲染页面.  确定原始数据结构  原始数据是需要按照下面这种结构来定义的,如果原始数据已经是被后端处理成树状结构,就可以省略这一步骤. let data = [ { "id": "1", "name": "1", "fath…
本文是苏福的原创文章,转载请注明出处:苏福CNblog:http://www.cnblogs.com/susufufu/p/5871134.html 该程序是本人的个人作品,写的不好,可以参考,但未经本人允许,请不要用于其它用途! 早上写了个首页进度加载动画,本想在我的博客里用上,测试发现博客园加载太快,根本看不到动画效果,直接就加载'Complete'了,算了,还是不要把博客搞得太臃肿了! 于是我就写了个演示页面,在body里加了个iframe来加载大一点的网站,这样就看出效果了! 用Safa…
项目中需要将后台浏览器的窗口全屏,也就是我们点击一个按钮要实现按F11全屏的效果. 在HTML5中,W3C制定了关于全屏的API,就可以实现全屏幕的效果,也可以让页面中的图片,视频等全屏目前只有google chrome 15 +, safri5.1+,firfox10+,IE11支持 查看例子,一睹为快! 全屏: var docElm = document.documentElement; //W3C if (docElm.requestFullscreen) { docElm.request…
最近遇到一个需求,需要点击按钮,复制 <p> 标签中的文本到剪切板 之前做过复制输入框的内容,原以为差不多,结果发现根本行不通 尝试了各种办法,最后使了个障眼法,实现了下面的效果 一.原理分析 浏览器提供了 copy 命令 ,可以复制选中的内容 document.execCommand("copy") 如果是输入框,可以通过 select() 方法,选中输入框的文本,然后调用  copy 命令,将文本复制到剪切板 但是 select() 方法只对 <input>…
原文地址: https://blog.csdn.net/u010377383/article/details/79838562 前言 为了提升移动端click的响应速度,使用了fastclick.js这么一个库. 这个库导致这个可编辑的div被点击无法轻松的唤起输入法. 长按才能成功.div的一个contentEditable="true" 解决方案 首先:再你的编辑器中增加一个class属性.我用的是quilljs <div id="editor" clas…