JS当中选项卡闭包问题(解决)
2017-01-20 12:03
447 查看
作用域当中的变量
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>选项卡</title> <style type="text/css"> ul{margin: 0;padding: 0} ul li{list-style:none;} button.current{ background-color: red; } #content{ width: 260px; height: 200px; border: 1px solid #ddd; overflow: hidden; } #content li{ display: none; width: 250px; height: 195px; background-color: #ddd; margin: 0 auto; } #content li.current{ display: block; } </style> <script type="text/javascript"> window.onload = function(){ var btns = document.getElementsByTagName("button"); var lis = document.getElementById("content").children; /* //闭包 for(var i=0; i<btns.length;i++){ btns[i].onclick = function(){ // 设置当前的按钮为current for(var j=0; j<btns.length;j++){ btns[j].removeAttribute("class"); } this.setAttribute("class","current"); // 将内容区对应的设置为current for(var k = 0;k<lis.length;k++){ lis[k].removeAttribute("class"); } alert(i); lis[i].setAttribute("class","current"); }; }*/ **使用匿名函数的调用传递外部变量到函数内部,并返回匿名函数,维护一个变量** // 解决闭包 for(var i=0;i<btns.length;i++){ btns[i].onclick = (function(num){ return function(){ //将当前按钮设置为current for(var j=0;j<btns.length;j++){ btns[j].removeAttribute("class"); } this.setAttribute("class","current"); //将内容区对应的li置为current for(var k=0;k<lis.length;k++){ lis[k].removeAttribute("class"); } lis[num].setAttribute("class","current"); } })(i); } }; </script> </head> <body> <button id="h1" class="current">商品信息</button> <button id="h2">参数配置</button> <button id="h3">商品评价</button> <ul id="content"> <li id="c1" class="current">商品信息的内容...</li> <li id="c2">配置参数的内容...</li> <li id="c3">商品评价的内容...</li> </ul> </body> </html>
相关文章推荐
- js中解决函数中使用外部函数局部变量的问题(闭包问题)
- JS中for循环里面的闭包问题的原因及解决办法
- js闭包,解决for循环变量未定义等类似问题
- 诡异的js闭包问题的解决.
- js的闭包解决百度地图的信息窗口问题
- js 解决js for 循环中的闭包问题
- JS中for循环里面的闭包问题的原因及解决办法
- JS中批量给元素绑定事件过程中的相关问题使用闭包解决
- JS之经典for循环闭包问题解决方法
- JS之经典for循环闭包问题解决方法
- js闭包解决ajax无法给外部变量赋值的问题
- js的一个有意思的小题,闭包解决getElementByTagName的for循环绑定事件错误问题
- 解决JS循环闭包导致索引始终为最后值的问题
- JS中批量给元素绑定事件过程中的相关问题使用闭包解决
- jsEclipse 1.5.5不能启动问题解决办法
- ext问题:ext-lang-zh_CN.js 未结束的字符串常量(解决)
- 解决图片显示比例匹配问题,我个人建议用js重新定义长宽
- js innerHTML 的一些问题的解决方法
- javascript(js)浮点数字精度问题的一个解决办法。
- 完美解决JS中汉字显示乱码问题(已解决)