JS中循环赋值和先查找再赋值,那个更合适
getElementsByClassName 不是标准的用法。而且,你不能保证 current 这个className 只在这里有用,所以起码也应该是getElementById(\u0026#39;swu\u0026#39;) . getElementsByClassName(\u0026#39;current\u0026#39;) 吧。这里的循环不会对效率造成明显影响,是因为只有在用户点击的时候才会循环一次,而不是一次就外循环*内循环。如果你追求高效,可以用一个变量把 current element 保存起来。另外,你是不是应该把为每个 li 绑定事件的方式改成委托?getElementById(\u0026#39;swu\u0026#39;).onclick = function(e){ e = e || window.event var target = e.target if(target.nodeName.toLowerCase() === \u0026#39;li\u0026#39;){ }}
■网友
首先无法保证current这个class在页面其他地方会不会用到, 你直接这样找类名赋值的写法可能会对页面其他元素造成影响。其次这里循环赋初值的意义是将同级的li状态清空,如果将来这里的除了current以外又增加了好几种className, 那你是不是还要将其他的className都查找再清空className一遍, 这样无形就降低了代码的维护性。其他方面比如事件委托, 浏览器兼容, 效率影响不大之类的,其他的答案都说的很好了。另外, for循环这里的length要用变量缓存起来, 不然每次循环会重新取一次length,都是一些小细节, 写多了养成强迫症看着就想替你改过来。。。。。
推荐阅读
- 『先进』长江流域最先进洗舱站在宁投运 油可分离回收,水能循环使用
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 通州|通州:项目扩容提质发力“双循环”
- Rust 中循环啥时候使用loop 啥时候使用while true?
- 在1对多的情况下,有啥好的存储方式及查找方法
- 双重for循环怎样优化效率
- |杜尔推出全新喷漆室概念 空气再循环率可高达95%
- 怎样在电脑上查找win8产品密匙
- js中for循环 为啥通常都是定义let i ;而不是let a,或者let b :)
- 怎样解决非结构化文档的查找问题
