第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么for循環(huán)中直接使用tr[i]不可以,(詳情見下面代碼)

為什么for循環(huán)中直接使用tr[i]不可以

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";
??????????? }??????

??? ?? }

}

這是別人的代碼,但我的問題和他有點不一樣,這是別人回答他:

這是由于事件的異步執(zhí)行造成的。方法一中給每個tr都綁定了onmouseover和onmouseout事件,頁面加載完成后,for循環(huán)中的i已經(jīng)變?yōu)榱藅r.length。而事件此時還沒有被觸發(fā),當用戶移動鼠標觸發(fā)事件時,事件函數(shù)中的代碼? tr[i].style.backgroundColor = "#f2f2f2";開始執(zhí)行,而這時i的值已經(jīng)是tr.length了,tr[i]即tr[tr.length],可tr中最后一個是tr[tr.length-1],而tr[tr.length]這個節(jié)點是不存在的。

我的問題是:

就是for循環(huán)結(jié)束后,每個tr[i]的事件不是已經(jīng)注冊了嗎?就是tr[0].style.backgroundColor = "#f2f2f2";這樣每個tr[i]事件都注冊了,那這時i怎么變不是應(yīng)該沒關(guān)系了嗎,為什么鼠標移動的時候觸發(fā)事件的時候還要在執(zhí)行tr[i].style.backgroundColor = "#f2f2f2";這個啊,不是應(yīng)該執(zhí)行如tr[0].style.backgroundColor = "#f2f2f2";這樣的,執(zhí)行的是注冊的事件嗎?


正在回答

4 回答

似乎有點明白,似乎不明白。。。我也是那樣寫的,怎么都行不通。。。把方法單獨寫到一個方法就OK,這感覺就像是這語言有點ZZ

0 回復(fù) 有任何疑惑可以回復(fù)我~

電腦有毒,鑒定完畢


0 回復(fù) 有任何疑惑可以回復(fù)我~

你得理解不對,每個tr[i]事件確實注冊了,但是只是注冊到?tr[i].onmouseover=function()這一步,具體事件內(nèi)容還是要等觸發(fā)的時候再去獲取

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

ゞ蘇戲 〃

為什么會沒有注冊方法體,具體原因給解釋解釋......
2016-11-10 回復(fù) 有任何疑惑可以回復(fù)我~
#2

慕容7796276 提問者

你是說等到觸發(fā)的時候再去獲取,是動態(tài)的獲取嗎?比如這個代碼 window.onload=function(){ var tr = document.getElementsByTagName("tr"); for(var i=0;i<1000000;i++){ tr[i].onmouseover=function(){ document.write(i); } } } 要是按照你說的觸發(fā)的時候獲取那i應(yīng)該會非常大的啊,為什么輸出的是3?。?/div>
2016-11-10 回復(fù) 有任何疑惑可以回復(fù)我~
#3

ゞ蘇戲 〃 回復(fù) 慕容7796276 提問者

蠢,over
2016-11-10 回復(fù) 有任何疑惑可以回復(fù)我~
#4

stone310 回復(fù) 慕容7796276 提問者

我不知道你這段代碼是怎么執(zhí)行出來為3的,能發(fā)全嗎??
2016-11-10 回復(fù) 有任何疑惑可以回復(fù)我~
#5

stone310 回復(fù) ゞ蘇戲 〃

js是單線程,事件觸發(fā)后才會將對應(yīng)的回調(diào)放到線程上等待執(zhí)行,所以,沒事多看看書,電腦有毒這種言論當個笑話說也沒什么意思
2016-11-10 回復(fù) 有任何疑惑可以回復(fù)我~
#6

慕容7796276 提問者

求回復(fù)啊
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#7

慕容7796276 提問者 回復(fù) stone310

window.onload = function(){ var tr = document.getElementsByTagName("tr"); for(var i=0;i<1000000;i++){ tr[i].onmouseover=function(){ document.write(i);}}} </script>
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#8

慕容7796276 提問者 回復(fù) stone310

<body> <table border="1" width="50%" id="table"> <tr> <th>學(xué)號</th> <th>姓名</th> <th>操作</th> </tr> <tr> <td>xh001</td> <td>王小明</td> <td><a href="javascript:;" >刪除</a></td> <!--在刪除按鈕上添加點擊事件 --> </tr>
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#9

慕容7796276 提問者 回復(fù) stone310

<tr> <td>xh002</td> <td>劉小芳</td> <td><a href="javascript:;" >刪除</a></td> <!--在刪除按鈕上添加點擊事件 --> </tr> </table> <input type="button" value="添加一行" /> <!--在添加按鈕上添加點擊事件 --> </body>
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#10

stone310 回復(fù) 慕容7796276 提問者

。。你這頁面就3個<tr>,最多i就是3了,i=4的時候,tr[i].onmouseover已經(jīng)報錯了好吧
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#11

stone310 回復(fù) 慕容7796276 提問者

應(yīng)該說i=2的時候,事件都是被注冊的,i為3的時候,tr[i]不存在,事件注冊時報錯,最終i為3
2016-11-11 回復(fù) 有任何疑惑可以回復(fù)我~
#12

慕容7796276 提問者 回復(fù) stone310

js要是報錯了是不是就不會運行下去了???也就是循環(huán)就會停止,而此時i等于3
2016-11-12 回復(fù) 有任何疑惑可以回復(fù)我~
#13

stone310 回復(fù) 慕容7796276 提問者

報錯了之后的代碼就不執(zhí)行了
2016-11-13 回復(fù) 有任何疑惑可以回復(fù)我~
查看10條回復(fù)

怎么沒人回答我的,跪求解答


0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

為什么for循環(huán)中直接使用tr[i]不可以,(詳情見下面代碼)

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號