為什么一定要改成this?為什么別人的代碼沒用this也能出效果?
我的: window.onload = function(){
??????? ?
???????????? changecolor();
????????? }
???? // 鼠標(biāo)移動(dòng)改變背景,可以通過給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來改變所在行背景色。
???????????? function changecolor(){
????????? var cc=document.getElementsByTagName("tr");
???????????? ?
????????? for(var i=0;i<cc.length;i++)
????????? {
????????? cc[i].onmouseover=function(){
?????????????? cc[i].style.backgroundColor="#f2f2f2";
???????????? ?
????????? }?? ?
???????? ?
?????????? cc[i].onmouseout=function(){?? ?
????????????? cc[i].style.backgroundColor="#fff";
???????? ?
????????? } ?
?? ??? ?
????????? }
?? ?
?? ? }
把cc[i]改成this就可以了,這是為什么呢?
別人的:?window.onload = function(){
????????? var tr=document.getElementsByTagName("tr");
????????? for(var i= 0;i<tr.length;i++)
????????? {
????????????? bgcChange(tr[i]);
????????? }
???? // 鼠標(biāo)移動(dòng)改變背景,可以通過給每行綁定鼠標(biāo)移上事件和鼠標(biāo)移除事件來改變所在行背景色。
????? }??????? ?
???? function bgcChange(obj)
???? {
??????? obj.onmouseover=function(){
??????????? obj.style.backgroundColor="#f2f2f2";
??????? }
??????? obj.onmouseout=function(){
??????????? obj.style.backgroundColor="#fff";
??????? }
?? ? }
不懂這些區(qū)別在哪里?
2016-04-21
this代表當(dāng)前作用域,,而tr[i],當(dāng)鼠標(biāo)放到某一行 應(yīng)該沒有辦法自動(dòng)識別出i=??
2016-04-07
????我們可以看看整個(gè)函數(shù)執(zhí)行的過程。
????首先i=0,同時(shí)為 tr[0]綁定事件onmouse,接著i=1,i=2,當(dāng)i=3的時(shí)候,由于i<tr.length(tr.length=3);所以跳出了循環(huán)。
????這時(shí)候i=3,并且保存到了內(nèi)存當(dāng)中。
????于此同時(shí),tr[i].onmouseover/tr[i].onmouseout這兩個(gè)事件是沒有執(zhí)行的,而for循環(huán)已經(jīng)結(jié)束了。
????i在內(nèi)存保存=3;當(dāng)鼠標(biāo)經(jīng)過觸發(fā)事件的時(shí)候,執(zhí)行函數(shù)cc[i].style.backgroundColor="#f2f2f2";/? cc[i].style.backgroundColor="#fff";,由于cc[3]這個(gè)節(jié)點(diǎn)是不存在的,所以控制臺報(bào)錯(cuò) can not ......。
? ??
2016-04-05
都表示上下文環(huán)境