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

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

9-22編程練習:為什么不通過函數給onmouseover賦值就不能正常改變顏色?

方法一:??

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";
??????????? }
??????? }
?? }
???方法二:

?? window.onload = function(){
???? // 鼠標移動改變背景,可以通過給每行綁定鼠標移上事件和鼠標移除事件來改變所在行背景色。
??????? var tr = document.getElementsByTagName("tr");
??????? for(var i=0; i<tr.length; i++){
?????????? bgcChange(tr[i]);
??????? }
?? }

?? function bgcChange(obj)
???? {
??????? obj.onmouseover=function(){
??????????? obj.style.backgroundColor="#f2f2f2";
??????? }
??????? obj.onmouseout=function(){
??????????? obj.style.backgroundColor="#fff";
??????? }
?? }


方法一不能正常執行,鼠標指向后顏色不變;方法二可以正常改變背景顏色,這是什么原因?糾結在這問題上2小時了。。。。。


正在回答

2 回答

????window.onload?=?function(){
????????var?tr?=?document.getElementsByTagName("tr");
????????for(var?i=0;?i<tr.length;?i++){
????????????tr[i].onmouseover=function(){
????????????????alert(i);?//你在這里彈出一下?i?看看是不是你覺得應該出現的值;
????????????????//tr[i].style.backgroundColor="#f2f2f2";
????????????????//你可以這么寫試試
????????????????this.style.backgroundColor="#f2f2f2";
????????????};
//????????????//也可以這么試一下
//????????????(function(i){
//????????????????tr[i].onmouseover=function(){
//????????????????????tr[i].style.backgroundColor="#f2f2f2";
//????????????????}
//????????????}(i));
????????????
????????????//這個方法的改法同上
????????????tr[i].onmouseout=function(){
????????????????tr[i].style.backgroundColor="#fff";
????????????}
????????}
????}

你可以試著按照注釋的來寫寫看,原因你可以去查一下閉包作用域相關的資料了解一下

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

qq_不能說的秘密_0 提問者

看了閉包的介紹立刻了解了這里的i相對function是全局的。當執行function時i已經都是length-1了。 我對你非常感謝。
2016-01-02 回復 有任何疑惑可以回復我~
#2

慕斯卡4106679

tr[i].onmouseover=function() 這個是什么用法?在前面教程沒教過
2016-01-04 回復 有任何疑惑可以回復我~
#3

qq_不能說的秘密_0 提問者 回復 慕斯卡4106679

匿名函數,js里相當部分的函數都直接賦值的
2016-01-05 回復 有任何疑惑可以回復我~

暈乎乎

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

舉報

0/150
提交
取消

9-22編程練習:為什么不通過函數給onmouseover賦值就不能正常改變顏色?

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

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

幫助反饋 APP下載

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

公眾號

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