zoukankan      html  css  js  c++  java
  • 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.65webappsWyl,果然这个路径下没有生成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代码})。

  • 相关阅读:
    String,StringBuffer与StringBuilder的区别?
    Digui
    Digui1
    逆序
    TestOverWrite
    DemoBoxWeight
    TestSuperSub
    Cast
    TestOverWrite
    Joseph
  • 原文地址:https://www.cnblogs.com/Sunnor/p/5171414.html
Copyright © 2011-2022 走看看