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

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

求指點迷津,我的onload函數哪里寫錯了,得不到想要的結果 !!

求大神指點一下迷津,我寫的錯在哪里??

window.onload?=?function(){?
?????????var?tr?=?document.getElementsByTagName("tr");
?????????for?(?var?i=0;i<tr.length;i++?){
????????????????//循環遍歷改變屬性及方法;
?????????????????tr[i].onmouseover?=?function(){
??????????????????????????tr[i].style.backgroundColor?=?"#f2f2f2";
????????????????};
????????????????tr[i].onmouseout?=?function(){
??????????????????????????tr[i].style.backgroundColor?=?"#fff";
????????????????};?
????????}?
}

正在回答

3 回答

window.onload?=?function(){
????????var?tr?=?document.getElementsByTagName("tr");????????
????????for?(?var?i=0;i<tr.length;i++?){
????????????var?ctr?=?tr[i];
????????????(function(ctr){
????????????????ctr.onmouseover?=?function(){
????????????????????ctr.style.backgroundColor?=?"#f2f2f2";
????????????????};
????????????????ctr.onmouseout?=?function(){
????????????????????ctr.style.backgroundColor?=?"#fff";
????????????????};
????????????}(ctr))
????????}
????}
window.onload?=?function(){
????????var?tr?=?document.getElementsByTagName("tr");
????????for?(?var?i=0;i<tr.length;i++?){
????????????var?ctr?=?tr[i];
????????????//循環遍歷改變屬性及方法;
????????????tr[i].onmouseover?=?function(){
????????????????this.style.backgroundColor?=?"#f2f2f2";
????????????};
????????????tr[i].onmouseout?=?function(){
????????????????this.style.backgroundColor?=?"#fff";
???????????};
????????}
????}

以上兩種方法都可以

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

一點兒也不 提問者

我想問下,為什么用數組引用出來的元素不能直接使用呢? 是在循環的過程中,跟C語言不一樣嗎,這個i不是按照順序實現的嗎?
2015-11-17 回復 有任何疑惑可以回復我~
#2

李曉健 回復 一點兒也不 提問者

你可把你的那個 i 彈出來看一下,這個i是你的tr的長度加1 不是循環里一直增加的那個數。如果你非要這么用,可以像上面我寫的第一種方法那個,把i傳到一個閉包里用。
2015-11-17 回復 有任何疑惑可以回復我~
#3

一點兒也不 提問者

非常感謝!
2015-11-18 回復 有任何疑惑可以回復我~

this表示當前對象啊,你每個tr都綁定了mouseover事件,鼠標經過當前對象后觸發事件~改變背景顏色,

如果是tr[i].style.backgroundColor?=?"#f2f2f2"; 那么這里的i無法指向當前經過了哪個對象。

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

一點兒也不 提問者

為什么這個i無法指向當前所經過的對象呢,不是用tr[i]引用出來了嗎?
2015-11-17 回復 有任何疑惑可以回復我~
#2

vivian_xu 回復 一點兒也不 提問者

我是這樣理解的,這個遍歷是給每個TagName為tr加上onmouseover和onmouseout事件,表現到HTML代碼中就是 <tr onmouseover="function(){ tr[i].style.backgroundColor = "#f2f2f2";}" onmouseout="function(){ tr[i].style.backgroundColor = "#fff";}"> 于是你就可以看出來,那個tr[i]他并不知道是什么東西。。。。 我也是新手啊,理解也不一定對的。而且this真的感覺好復雜。。。。 - -
2015-11-18 回復 有任何疑惑可以回復我~
#3

一點兒也不 提問者 回復 vivian_xu

好像是這么個理。它復制的有點類似于文本,而不是根據實際來改變對象屬性。
2015-11-29 回復 有任何疑惑可以回復我~

將onmouseover與out函數里面的tr[i]換成this卻可以成功運行,求解釋???

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

舉報

0/150
提交
取消

求指點迷津,我的onload函數哪里寫錯了,得不到想要的結果 !!

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

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

幫助反饋 APP下載

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

公眾號

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