日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

JavaScript之共享onload

發(fā)布時(shí)間:2025/5/22 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript之共享onload 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們知道,當(dāng)我們將JS代碼腳本放到<head></head>標(biāo)簽之間時(shí),這是的js代碼加載要先于DOM加載,而我們往往會(huì)在JS代碼腳本中寫一些獲取DOM元素的代碼,而此時(shí)的DOM是不完整的,

所以我們通常的解決方法是將函數(shù)放入到window.onload里面去,window.load事件是網(wǎng)頁(yè)加載完畢時(shí)會(huì)觸發(fā)的一個(gè)事件,如果將我們的函數(shù)與之綁定,我們的函數(shù)也會(huì)在頁(yè)面加載完畢之后執(zhí)行.

如下代碼:

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">var aa = document.getElementById("target");alert(aa.nodeName);</script> </head> <body><div id="target"></div> </body> </html>

這段代碼在瀏覽器執(zhí)行時(shí)就會(huì)報(bào)錯(cuò),aa is null;因?yàn)樵趈s獲取id=target的div時(shí),該div還沒(méi)有加載完畢。所以我們需要這樣來(lái)解決這個(gè)問(wèn)題,代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">window.onload = bb;function bb() {var aa = document.getElementById("target");alert(aa.nodeName);}</script> </head> <body><div id="target"></div> </body> </html>

這個(gè)時(shí)候代碼正常輸出:DIV;? nodeName默認(rèn)輸出標(biāo)簽名的大寫形式;

這似乎已經(jīng)解決了我們的問(wèn)題,但是不夠perfect,如下代碼:

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">window.onload = bb;cc();function bb() {var aa = document.getElementById("target");alert(aa.nodeName);}function cc() {var dd = document.getElementById("Div1");alert(dd);}</script> </head> <body><div id="target"></div><div id="Div1"></div> </body> </html>

這個(gè)時(shí)候任然會(huì)報(bào)錯(cuò):dd id null;錯(cuò)誤原因和上面一樣;

解決辦法有兩個(gè):

1、將需要綁定window.onload事件的兩個(gè)函數(shù)寫到一個(gè)匿名函數(shù)里面,在將該匿名函數(shù)與window.onload事件綁定,ok,問(wèn)題解決!

但是這個(gè)方法只能解決需要綁定window.onload事件的函數(shù)較少的情況,一旦那些函數(shù)有很多,這個(gè)方法就不是很好!

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">window.onload = ee;function bb() {var aa = document.getElementById("target");alert(aa.nodeName);}function cc() {var dd = document.getElementById("Div1");alert(dd.firstChild.nodeValue);}function ee() {bb();cc();}</script> </head> <body><div id="target"></div><div id="Div1">asdas</div> </body> </html>

?

2、這是一個(gè)彈性最佳的解決方案?????? 不管你打算在頁(yè)面加載完畢是執(zhí)行多少個(gè)函數(shù),他都能應(yīng)付自如;代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">addOnLoadEvent(aa);addOnLoadEvent(bb);function aa() {var aa=document.getElementById("ab");alert(aa.firstChild.nodeValue);}function bb() {var bb = document.getElementById("abc");alert(bb.firstChild.nodeValue);}//定義一個(gè)addOnLoadEvent的函數(shù) function addOnLoadEvent(func) {var oldonload = window.onload;if (typeof window.onload != "function") {window.onload = func; //如果window.onload事件沒(méi)有綁定任何function則正常綁定 }else {//如果window.onload事件已經(jīng)綁定了函數(shù),則在原來(lái)的基礎(chǔ)上,繼續(xù)添加新的函數(shù)window.onload = function () {oldonload();func();};}}</script> </head> <body> <div id="ab">1</div> <div id="abc">2</div> </body> </html>

上面的addOnloadEvent()方法解決了我們的問(wèn)題,但是還不夠全面,因?yàn)楫?dāng)需要綁定的方法過(guò)多時(shí),我們就要寫多條addOnLoadEvent(方法);所以為了減少代碼量這里的代碼還可以這樣改,

代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title></title><script type="text/javascript">var onloadlist = [aa,bb];//定義一個(gè)數(shù)組,數(shù)組里面都是需要在頁(yè)面加載完畢之后才執(zhí)行的函數(shù)引用 addOnLoadEvent(onloadlist);function aa() {alert(1);}function bb() {alert(2);}function addOnLoadEvent(eventlist) {//循環(huán)遍歷數(shù)組依次加到隊(duì)列中window.onload = function () {for (var i = 0; i < eventlist.length; i++) {eventlist[i]();}}}</script> </head> <body> <div id="ab">1</div> <div id="abc">2</div> </body> </html>

這樣就一定程度上減少了代碼量,還便于管理方法的執(zhí)行先后順序。

?

轉(zhuǎn)載于:https://www.cnblogs.com/GreenLeaves/p/5726271.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript之共享onload的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产日产精品一区二区三区四区 | 亚洲精品视频大全 | 国产电影免费观看高清完整版视频 | 国产精品成人av久久 | 香蕉久久久久久久av网站 | 久久久久久久久久久影院 | 啦啦啦视频在线观看 | 国产黄色观看 | 香蕉小视频| 在线观看视频亚洲 | 日韩高清片 | 日韩人妻精品无码一区二区三区 | 久久久无码精品亚洲无少妇 | 特色特色大片在线 | 综合激情网 | 性感美女被爆操 | 男生坤坤放进女生坤坤里 | 强乱中文字幕 | 久草网在线视频 | 久久一卡二卡 | 久久久一区二区三区 | 亚洲福利电影 | jizz网站 | 青草青青视频 | 在线视频导航 | 免费一级特黄特色大片 | 曰本黄色片 | 国产精品国产一区二区 | 中日韩中文字幕 | 久久精品欧美一区 | 国产黄色一级大片 | 爱爱综合| 国产在线观看99 | 黄色永久网站 | 人妻偷人精品一区二区三区 | 韩国黄色精品 | 欧美极品少妇xxxxⅹ免费视频 | 美女热逼| 久久久老司机 | 麻豆av免费在线观看 | 亚洲天堂福利视频 | 毛片成人网 | 精品一区二区三区在线免费观看 | 欧美精品观看 | 国产高清视频免费观看 | 337p嫩模大胆色肉噜噜噜 | 亚洲高清网站 | 91成人精品 | 亚洲综合小说网 | 九九久久国产 | 激情视频区 | 91国偷自产一区二区三区女王 | www.久久| 成人在线免费网址 | 色桃网| 色噜噜一区二区 | 亚洲成人自拍网 | 五月天综合网 | 给我免费观看片在线电影的 | 制服.丝袜.亚洲.中文.综合懂色 | 欧美经典一区二区三区 | 欧美成人不卡 | 亚洲精品小说 | 欧洲综合视频 | 在线播放a | jizz美女| 欧美粗大猛烈老熟妇 | 亚洲福利天堂 | 欧美超逼视频 | 看免费黄色大片 | 性大毛片视频 | 久久精品偷拍视频 | 亚洲一区中文字幕在线观看 | 男女激情实录 | 亚州欧美 | 免费观看毛片视频 | 亚洲精品在线不卡 | 91操操操| 梦梦电影免费高清在线观看 | 国产在线观看无码免费视频 | 怡红院一区 | 1024手机在线观看 | 在线91视频 | 日韩一区二区在线播放 | 黄色性情网站 | 久草国产视频 | 亚洲精品一二三四区 | 99在线精品观看 | 吖v在线 | 欧美草b| 91香蕉国产在线观看 | www超碰在线 | 国产婷婷色一区二区三区 | 久久夜色精品国产欧美乱 | 制服丝袜影音先锋 | 男女国产精品 | 777米奇影视第四色 五月丁香久久婷婷 | 中文字幕亚洲天堂 | 精品成人无码一区二区三区 |