那麼有什麼不同呢?先看一個例子:
一個二級級聯動態下拉列表框,一級分類(即大類別)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。