JS代碼放在head和body中的區別: 放在head中的JS代碼會在頁面加載完成之前就讀取,而放在body中的JS代碼,會在整個頁面加載完成之后讀取。


說了半天閑話,其RT的答案很簡單:

放在head中的JS代碼會在頁面加載完成之前就讀取,而放在body中的JS代碼,會在整個頁面加載完成之后讀取。

那么有什么用途呢?

這就告訴我們,如果我們想定義一個全局對象,而這個對象是頁面中的某個按鈕(諸如此類)時,我們必須將其放入body中,道理很明顯:如果放入head,那當你定義的時候,那個按鈕都沒有被加載,你能得到的只可能是一個undefind

以上。

 

那么有什么不同呢?先看一個例子:

一個二級級聯動態下拉列表框,一級分類(即大類別)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>

現在有個js腳本:

<script LANGUAGE="JavaScript" >

changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value);//初始化第一個一級分類的二級分類,去掉后第一個一級分類的二級分類在頁面載入之后不顯示。回選才顯示。將一級分類的value傳給changelocation()函數,生成二級分類的列表

</script>

那么把這個js腳本放head里面還是body里面呢?答案是不僅要放到body里面,而且還得放到定義id='vSort0'的列表框后面,因為這個js腳本中有document.form4.vSort0.selectedIndex,如果放到head里或者body的id='vSort0'前,頁面加載后順序執行代碼,執行到這個js發現vSort0未定義(即undefind),這個js也就失去了作用。

而為什么我們經常看到有很多的人把js腳本放到head里面沒事呢?對!就是因為你看到的在head里的js代碼有onclick等事件傳遞了變量給函數。

這就告訴我們,如果我們想定義一個全局對象,而這個對象與頁面中的某個按鈕(等等)有關時,我們必須將其放入body中,道理很明顯:如果放入head,那當頁面加載head部分的時候,那個按鈕(等等)都還沒有被定義(也可以說是還沒有被加載,因為加載的過程就是執行代碼的過程,包括了定義),你能得到的只可能是一個undefind。

 

注:轉載自:http://jorton468.blog.163.com/blog/static/7258813520107102130260/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM