jsp中的jquery失效以及引入js失敗的問題


  這段時間在試着看公司用的框架是怎么寫的,看到項目中對jquery進一步封裝的這一部分,所以自己試着寫一些demo來模仿框架中的用法。

  再一次的,又遇到了一個問題,jsp中引入js的問題,好久沒有自己從頭一步一步地在jsp中引入js了,怎么弄都沒法達到預想的結果。現在把遇到的問題以及解決辦法寫在這里,以便以后遇到后查看。

  1.在jsp中,引入js但是瀏覽器總是報404找不到對應的js的處理辦法,

先說結論:js最好還是放在WebContent下,然后clean,如果瀏覽器報404找不到js,那么就在tomcat服務器對應的項目下看是否有對應的js。

解決辦法jsp中引入js還是寫絕對路徑比較省事,開始的時候我把js這個文件夾放在項目下,即Wyl下,但是運行項目的時候瀏覽器總是提示找不到引入的my.js和jquery.js,然后我就在tomcat下看,具體路徑E:\apache-tomcat-7.0.65\webapps\Wyl,果然這個路徑下沒有生成js這個文件夾,所以肯定找不到引入的my.js等了,試了好幾次,只有把js文件夾放在WebContent下,然后clean項目后,在
上面的路徑下就可以看到引入的js文件夾以及jquery.js等了

  2.在jsp或者html中,關於jquery選擇器失效的問題,比如在以下代碼中,

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 4 <title>Insert title here</title>
 5 
 6 <script type="text/javascript" src="jquery-2.2.0.js"></script>
 7 <script type="text/javascript" src="my.js"></script>
 8 <script type="text/javascript">
 9     // var len = $("img").length;
10     // alert(len);
11     // $(function(){
12     //     var len = $("img").length;
13     //     alert(len);    
14     // })
15     alert($("img").length);//alert出來的總是0 ,
16 </script>
17 </head>
18 <body>
19 
20     <form action="tosubmit" method="post" class="yongle">
21         賬號:<input type="text" name="mingzi" /><br>
22         密碼:<input type="password" name="mima" /><br> 
23         <input type="submit" value="登陸" />
24     </form>
25     <img /> <img />
26     <a href="dynamicMethod.do" class="yongle">轉到dynamicMethod.jsp</a>
27     <a href="dynamicMethod">也是轉到dynamicMethod.jsp</a>
28     <a href="dynamicMethod.action">哈哈,也是轉到dynamicMethod.jsp</a>
29 </body>
30 <script type="text/javascript">
31     alert($("img").length);//alert出來的是預想的 2
32 </script>
33 </html>

15行,和31行的兩個alert,這個應該跟瀏覽器加載網頁的先后步驟有關,我自己理解為:在<head>標簽里的<script>代碼執行的時候<body>中的代碼還沒加載出來,所以

jquery選擇器肯定選擇不到任何元素,因此這個jquery對象的長度就是0,jquery對象實際上是一個數組。

因此如果想一次性避免麻煩,則有兩個解決辦法,

方法1 :把<script>標簽后移,放在<body>標簽后,這樣當執行到<script>的時候<body>里的代碼已經加載完成,jquery提供的選擇器等功能也就能夠正常工作了。

實際上,我們現在的這個項目是放在jsp最后的,即body后面的,這種方式比較省事一點。

方法2 :如果實在要把js代碼寫在head標簽里,可以把js代碼寫在$(function(){//js代碼})。


免責聲明!

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



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