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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于window.onload的問題

關于window.onload的問題

qq_煙火里的塵埃_0 2016-08-18 10:17:37
一般把script放在body的最下方就可以獲取到body里的元素了,可是我做的這個選項卡效果把script放在body的最下面了,可是去掉window.onload之后,效果就出不來了,這是怎么回事<!DOCTYPE?html> <html> <head> ????<meta?charset="UTF-8"> ????<title>Title</title> ????<style> ????????*{ ????????????margin:0; ????????????padding:0; ????????????list-style-type:?none; ????????} ????????#container{ ????????????width:400px; ????????????height:250px; ????????????position:?relative; ????????} ????????#top?li{ ????????????width:100px; ????????????height:50px; ????????????float:?left; ????????} ????????#bottom?li{ ????????????width:400px; ????????????height:200px; ????????????position:?absolute; ????????????left:0; ????????????top:50px; ????????????display:?none; ????????} ????????.first{ ????????????background:?red; ????????} ????????.second{ ????????????background:?blue; ????????} ????????.third{ ????????????background:?purple; ????????} ????????.four{ ????????????background:?pink; ????????} ????????#bottom?li.first{ ????????????display:?block; ????????} ????</style> </head> <body> <div?id="container"> ????<ul?id="top"> ????????<li></li> ????????<li></li> ????????<li></li> ????????<li></li> ????</ul> ????<ul?id="bottom"> ????????<li></li> ????????<li></li> ????????<li></li> ????????<li></li> ????</ul> </div> <script> ????window.onload=?function?()?{ ????????var?top?=?document.getElementById("top"), ????????????top_li?=?top.getElementsByTagName("li"), ????????????bottom?=?document.getElementById("bottom"), ????????????bottom_li?=?bottom.getElementsByTagName("li"); ????????for?(var?i?=?0;?i<top_li.length;i++){ ????????????top_li[i].index?=?i; ????????????top_li[i].onclick?=?function(){ ????????????????for?(var?j?=?0;j<bottom_li.length;j++){ ????????????????????bottom_li[j].style.display?=?"none"; ????????????????} ????????????????bottom_li[this.index].style.display?=?"block"; ????????????}; ????????} ????} </script> </body> </html>
查看完整描述

3 回答

已采納
?
stone310

TA貢獻361條經驗 獲得超191個贊

思路沒錯的!問題出在top這個變量名字上,你會發現這一段程序在IE下能完美執行,

因為window.onload去掉后,變量為全局變量,而chrome和FF已經把top這個變量定義了,所以不能再用top作為全局變量,你隨便換個名字都可以了

查看完整回答
反對 回復 2016-08-18
?
田心楓

TA貢獻1064條經驗 獲得超383個贊

去掉js都沒加載進來,當然不起作用

查看完整回答
反對 回復 2016-08-18
  • qq_煙火里的塵埃_0
    qq_煙火里的塵埃_0
    我放在最下面了,應該加載進來了啊
  • 田心楓
    田心楓
    window.onload=function(){}是指當頁面全部加載完畢之后,再去執行function(){}大括號中的代碼。 這樣寫是因為要保證代碼執行的時候,HTML的所有DOM節點已經加載出來了。由于性能或者網絡問題,頁面的加載不是一瞬間完成的,是有一個時間過程的,比如你想用JS操作一張圖片的話,當網頁讀取到這一段JS代碼的時候,圖片的DOM節點可能還沒有加載出來,瀏覽器就會報錯。為了避免這種情況,所以要在window.onload事件觸發之后,再去執行后面的function。 上面只是一個比較簡單的解釋,更詳細的你可以查閱一下相關的資料,涉及到了瀏覽器的渲染機制、DOM的加載順序等等。
  • 田心楓
    田心楓
    不加這個的話,你function的代碼沒法執行
  • 3 回答
  • 0 關注
  • 1637 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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