我让 下拉列表默认显示jsp页面 接收session存储的 对象的值 写了一个 JavaScript      function showSel(){
         showMethod('selarea2','${updateinfo.area}');
         showMethod('selsur','${updateinfo.isSurrogate}');
         showMethod('selshape','${updateinfo.houseShape}');
         showMethod('seltype2','${updateinfo.houseType}');
             showMethod('seltotal','${updateinfo.totalFloor}');
             showMethod('selat','${updateinfo.atFloor}');
   }
   
   function showMethod(selobj,strutsvalue){
        var obj=document.getElementById(selobj);
    for(var i=0;i<obj.length;i++){
    if(obj.options[i].value== strutsvalue){ 
     obj.options[i].selected=true;
    }
    }
   }然后用onload 事件 就可以显示  写在页面能够成功  但是 我把它写进 js文件   然后 用  <script type="text/javascript" src="***.js" >  这样写  却没有了效果   
大家帮我解释下是什么原因  

解决方案 »

  1.   

    大多数情况下是调用未成功造成的,也就是路径的问题可能没有访问到你定义好的xx.js文件你可以在xx.js文件里方法头alert()一下看看到底执行JS文件没,
      

  2.   

    可以确定不是 路径的问题  因为 我alert 了  可以测试       我想不知道是不是 没有加载进来  
      

  3.   

    function showSel(){
    showMethod('selarea2','${updateinfo.area}');
    showMethod('selsur','${updateinfo.isSurrogate}');
    showMethod('selshape','${updateinfo.houseShape}');
    showMethod('seltype2','${updateinfo.houseType}');
      showMethod('seltotal','${updateinfo.totalFloor}');
      showMethod('selat','${updateinfo.atFloor}');
    }你把这个函数也写在了 ***.js 文件里了?那就肯定错了
    你需要搞清楚那些是在服务器上执行的  那些实在客户端执行的
    JSTL标签是要在服务器上编译好然后发送给客户端的,*.jsp 都会生成*.java 然后编译成*.class 在被访问的时候生成HTML发到浏览器上 *.js等静态内容会直接发给浏览器解析
    所以,把含有 表达式 的JS抽出来肯定会出问题的 
    给2个方法:
      1.可以抽出js文件,但是将 '${updateinfo.atFloor}'赋值给JS的对象
        eg.var atFloor = '${updateinfo.atFloor}'然后再JS里面使用这个变量 而非表达式
      2.把含有表达式的函数放在JSP文件里面