for,this以及针对需求引发的思考
今天主要学习for应用和this关键字。
1、通过ID来获取值是静态方法,相对的,通过这段代码document.getElementsByTagName('li')是动态方法,这样获取到的是元素的集合,类似数组;所以再用到TagNames的时候,必须要加上[],也就是中括号。
如:var oUl = document.getElementsByTagName('ul')[0]; //获取文档中第一个ul
2、获取body中的元素:document.body.innerHTML
3、for循环的写法:for(var i=0; i<3; i++){ 功能 }
4、关于改善性能的问题:
往body中添加按钮时,如果向body中一个一个添加,需要多次读取body,会影响其性能(注释的代码功能)。
改善办法:创建一个空字符串,先把添加按钮的操作放入字符串中,最后再一起放入body中。
5、cssText属性:
这个改变的是元素的行间样式,并且会覆盖style中的样式显示,如果改成‘空’,则会恢复style中的样式。
6、针对一种需求下的思考:点击一个按钮后,发生某种功能,再次点击按钮不再生效。
(1)让按钮消失或者按钮变成灰色————简单粗暴,但是用户体验不好。
(2)每次点击都清除上次的结果,然后再次重新生成结果————增加了浏览器负担,对性能不好。
(3)设置一个开关(var onOff = true),当点击执行完后,使其变为false,再点击不会再执行(if 判断条件的前提下)
上面第三个方案是相对来说比较好的方案,所以在实现需求时,我们不应该仅仅为了实现而实现,需要考虑一些实际的因素。
7、this 指的是调用当前方法的那个对象,因为对象一直在动态变化,所以用this。
fn1()里的this对象是window,所以需要把this用空的that存起来,间接使用。