亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于源代碼this的問題

?function Highlight(){

var tbody = document.getElementById('table').lastChild;

trs = tbody.getElementsByTagName('tr'); ??

for(var i =1;i<trs.length;i++){

trs[i].onmouseover = function(){

this.style.backgroundColor ="#f2f2f2";

}?

trs[i].onmouseout = function(){

this.style.backgroundColor ="#fff";

}?

} ?

}


上面的this,能用trs[i]代替么

正在回答

2 回答

不可以,trs[i]不在匿名函數的作用域內,除非將trs[i]以參數傳到函數內部,你可以試下,如下代碼trs[i]的結果是undefined

HTML部分

<table>
	<tr>
		<td>TD11</td>
		<td>TD12</td>
	</tr>

	<tr>
		<td>TD21</td>
		<td>TD22</td>
	</tr>	
</table>

JS部分

window.onload=function(){
	var?tbody?=?document.getElementsByTagName('tbody')[0];
	trs?=?tbody.getElementsByTagName('tr');???
	for(var?i?=0;i<trs.length;i++){
	trs[i].onmouseover?=?function(){
		console.log(trs[i]);
		//?trs[i].style.backgroundColor?="#f2f2f2";
	}?
	trs[i].onmouseout?=?function(){
		//?trs[i].style.backgroundColor?="#fff";
	}?
	}?
}


1 回復 有任何疑惑可以回復我~
#1

慕瓜6239116 提問者

非常感謝~~~
2017-07-25 回復 有任何疑惑可以回復我~

不可以,trs[i]作用域不在函數內部,可以想象下此函數本應該在外邊寫的,而現在是沒有給起名字,作為匿名函數使用,也就是說for循環只有此函數的引用,而函數體本身是沒有在for內的

——大概是這樣,這個我也有些模糊

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468966    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

關于源代碼this的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號