日期:2014-05-16  浏览次数:20531 次

关于jsp页面中,js代码写在哪个位置的问题。
<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${ pageContext.request.contextPath }/js/jquery-1.7.js"></script>
<script type="text/javascript">
var list = document.getElementById("list"); //当我放在这的时候,alert结果为空
alert(list);
var oli = list.getElementsByTagName("li"); //这里如果我把上面改为$("#list"),那么会报没有这个function。
alert(oli); 
</script>
</head>
<body>
<div id="div">s</div>
<ul id="list">
  <li>
  <a href="" title="iphone_ios">苹果</a>
  <div class="popDiv">
   
  </div>
  </li>
  <li>
  <a href="" title="安卓_java">google</a>
  <div class="popDiv">
   
  </div>
  </li>
  <li>
  <a href="" title="wp">微软</a>
  <div class="popDiv">
   
  </div>
  </li>
  <li>
  <a href="" title="mysql">甲骨文</a>
  <div class="popDiv">
   
  </div>
  </li>
  <li>
  <a href="" title="全球最大的社交网站">facebook</a>
  <div class="popDiv">
   
  </div>
  </li>
</ul>
<script type="text/javascript">
var list = document.getElementById("list"); //放在这里就能拿到。
alert(list);
var oli = list.getElementsByTagName("li");
alert(oli);
</script>
</body>
</html>

  把js代码,放在上面和下面有什么区别呢?

------解决方案--------------------
探讨

js操作dom,需要等dom加载完毕后才可以进行操作。

写在上面也可以
window.onload = function(){
// your code
}
意思就是 等 页面 加载完毕在执行js

------解决方案--------------------
1L正解,DOM树是自上而下顺序加载的,如果在head里面直接运行js代码的话,这个时候body部分还没加载,这样就会取不到里面的元素

通常是等到DOM树全部加载完后在执行js
window.onload=function(){
///...
}

$(function(){
//...
})