Javascript 做Tab切换标签对于闭包的解决方法。

骚年继续努力!大家加油!

还是在做慕课网Javascript进阶篇最后的编程挑战时遇到的问题,大神轻喷~

原题地址:http://www.imooc.com/code/1912

基本结构是这样的,给title设置float:left;属性使其在并排显示。

HTML结构

步入正题,在HTML结构中能够看到,对于title和content我只设置第一个为show状态。

title的show相对于hide的区别是有不同的border-bottom
content的show相对于hide的区别是display:block和display:none

对于JS的想法是这样,获取title下的li标签,content下的div标签,然后用循环遍历所有的li标签,给每一个li添加onclick事件。

事件内用foer循环遍历所有content下的div使其className都为contentHide,在循环结束之后将被点击的tit对应索引找到第几个content下的div设置其className属性为contentShow。 于是我这样写了。

错误的JS代码

然后,运行无效果,只能出来第三个ocntent内容。
也就是这样写的话,每个点击事件最后都是i=2时的结果。

所以我们要想办法把当前点击的索引取出来并保存,在后面使用。

1.var一个index用来储存每次点击之后获取到的下标

2.在点击之后 this.index = i;

3.写一个show方法,将this.index作为参数传到此方法中

4.在show方法中首先 index = 传入的参数;

5.用for隐藏所有内容,contentList[index].className设置为show

OK完成 最后写出来是这样。

最终的正确JS代码

最重要的是用 this.index将当次的索引传出,这样就可以避免设置时都是循环结束时i的值。

本文作为学习笔记分享,如有错误请随意喷,转载请注明作者:我叫掏粪##

求喜欢+评论##

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 小孩儿小孩儿你别馋,过了腊八就是年!赶紧忙里偷闲做点美食———川菜之泡椒凤爪。 第一步清洗风爪,用开水抄一下 第二...
    奋斗的采样员阅读 390评论 0 0
  • 加了蜜的中药 冬日里的烤火炉 装在热水壶里的冷开水 刚发芽的郁金香 被子掀开的床 钱夹里的旧照片 日记本里泛黄的银...
    iceaswater阅读 297评论 0 0
  • 紫煊: 我亲爱的宝贝儿,今天早上我依旧很早叫你起床,我们要赶着去上8点半的画画课。你眯着眼睛央求我,读个故事...
    窚煊阅读 270评论 2 6