JS代碼放在head和body中的區(qū)別分析
更新時(shí)間:2011年12月01日 00:02:08 作者:
放在head中的JS代碼會在頁面加載完成之前就讀取,而放在body中的JS代碼,會在整個(gè)頁面加載完成之后讀取
那么有什么不同呢?先看一個(gè)例子:
一個(gè)二級級聯(lián)動(dòng)態(tài)下拉列表框,一級分類(即大類別)id="vSort0".
<head>
function changelocation(id)
{…………}
</head>
<body><select class="input1" id="vSort0" name="vSort0" onChange="changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);" style="width:100px;">……省略……</select>
………………
</body>
現(xiàn)在有個(gè)js腳本:
<script LANGUAGE= "JavaScript" >
changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value); //初始化第一個(gè)一級分類的二級分類,去掉后第一個(gè)一級分類的二級分類在頁面載入之后不顯示?;剡x才顯示。將一級分類的value傳給changelocation()函數(shù),生成二級分類的列表
</script>
那么把這個(gè)js腳本放head里面還是body里面呢?
答案是不僅要放到body里面,而且還得放到定義id='vSort0'的列表框后面,因?yàn)檫@個(gè)js腳本中有document.form4.vSort0.selectedIndex,如果放到head里或者body的id='vSort0'前,頁面加載后順序執(zhí)行代碼,執(zhí)行到這個(gè)js發(fā)現(xiàn)vSort0未定義(即undefind),這個(gè)js也就失去了作用。
而為什么我們經(jīng)??吹接泻芏嗟娜税裫s腳本放到head里面沒事呢?對!
就是因?yàn)槟憧吹降脑趆ead里的js代碼有onclick等事件傳遞了變量給函數(shù)。
這就告訴我們,如果我們想定義一個(gè)全局對象,而這個(gè)對象與頁面中的某個(gè)按鈕(等等)有關(guān)時(shí), 我們必須將其放入body中,道理很明顯:如果放入head,那當(dāng)頁面加載head部分的時(shí)候,那個(gè)按鈕(等等)都還沒有被定義(也可以說是還沒有被加 載,因?yàn)榧虞d的過程就是執(zhí)行代碼的過程,包括了定義),你能得到的只可能是一個(gè)undefind。
一個(gè)二級級聯(lián)動(dòng)態(tài)下拉列表框,一級分類(即大類別)id="vSort0".
復(fù)制代碼 代碼如下:
<head>
function changelocation(id)
{…………}
</head>
<body><select class="input1" id="vSort0" name="vSort0" onChange="changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);" style="width:100px;">……省略……</select>
………………
</body>
現(xiàn)在有個(gè)js腳本:
復(fù)制代碼 代碼如下:
<script LANGUAGE= "JavaScript" >
changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value); //初始化第一個(gè)一級分類的二級分類,去掉后第一個(gè)一級分類的二級分類在頁面載入之后不顯示?;剡x才顯示。將一級分類的value傳給changelocation()函數(shù),生成二級分類的列表
</script>
那么把這個(gè)js腳本放head里面還是body里面呢?
答案是不僅要放到body里面,而且還得放到定義id='vSort0'的列表框后面,因?yàn)檫@個(gè)js腳本中有document.form4.vSort0.selectedIndex,如果放到head里或者body的id='vSort0'前,頁面加載后順序執(zhí)行代碼,執(zhí)行到這個(gè)js發(fā)現(xiàn)vSort0未定義(即undefind),這個(gè)js也就失去了作用。
而為什么我們經(jīng)??吹接泻芏嗟娜税裫s腳本放到head里面沒事呢?對!
就是因?yàn)槟憧吹降脑趆ead里的js代碼有onclick等事件傳遞了變量給函數(shù)。
這就告訴我們,如果我們想定義一個(gè)全局對象,而這個(gè)對象與頁面中的某個(gè)按鈕(等等)有關(guān)時(shí), 我們必須將其放入body中,道理很明顯:如果放入head,那當(dāng)頁面加載head部分的時(shí)候,那個(gè)按鈕(等等)都還沒有被定義(也可以說是還沒有被加 載,因?yàn)榧虞d的過程就是執(zhí)行代碼的過程,包括了定義),你能得到的只可能是一個(gè)undefind。
您可能感興趣的文章:
- 基于JS實(shí)現(xiàn)彈出一個(gè)隱藏的div窗口body頁面變成灰色并且不可被編輯
- JavaScript設(shè)置body高度為瀏覽器高度的方法
- JavaScript中window、doucment、body的解釋
- 使用JS或jQuery模擬鼠標(biāo)點(diǎn)擊a標(biāo)簽事件代碼
- javascript和jquery修改a標(biāo)簽的href屬性
- js實(shí)現(xiàn)a標(biāo)簽超鏈接提交form表單的方法
- JS 實(shí)現(xiàn)點(diǎn)擊a標(biāo)簽的時(shí)候讓其背景更換
- js確認(rèn)刪除對話框適用于a標(biāo)簽及submit
- 在JS中a標(biāo)簽加入單擊事件屏蔽href跳轉(zhuǎn)頁面
- Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對路徑方法
- JavaScript實(shí)現(xiàn)獲取用戶單擊body中所有A標(biāo)簽內(nèi)容的方法
相關(guān)文章
Js鼠標(biāo)跟隨代碼小手點(diǎn)擊實(shí)例方法
一個(gè)跟隨鼠標(biāo)的小手效果,鼠標(biāo)移在哪里,小手就跟著移向哪里,會出現(xiàn)手的效果,放在鏈接上的時(shí)候,手會變化,兩只手很可愛哦,JS鼠標(biāo)跟隨代碼分享與大家。2013-05-05uniapp實(shí)現(xiàn)app檢查更新與升級詳解(uni-upgrade-center)
UniApp是一個(gè)跨平臺的開發(fā)框架,可以同時(shí)開發(fā)iOS和Android應(yīng)用,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)app檢查更新與升級(uni-upgrade-center)的相關(guān)資料,需要的朋友可以參考下2023-11-11微信小程序?qū)崿F(xiàn)的一鍵復(fù)制功能示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的一鍵復(fù)制功能,結(jié)合實(shí)例形式分析了微信小程序wx.setClipboardData接口實(shí)現(xiàn)操作粘貼板進(jìn)行復(fù)制操作的相關(guān)使用技巧,需要的朋友可以參考下2019-04-04JS輕松實(shí)現(xiàn)CSS設(shè)置,DIV+CSS常用CSS設(shè)置
JS輕松實(shí)現(xiàn)CSS設(shè)置,DIV+CSS常用CSS設(shè)置...2007-02-02JavaScript console對象與控制臺使用示例詳解
這篇文章主要介紹了JavaScript console對象與控制臺的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10基于 Bootstrap Datetimepicker 聯(lián)動(dòng)
這篇文章主要介紹了基于bootstrap datetimepicker 聯(lián)動(dòng)效果,需要的朋友可以參考下2017-08-08taro 實(shí)現(xiàn)購物車邏輯的實(shí)例代碼
這篇文章主要介紹了taro 實(shí)現(xiàn)購物車邏輯,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06