现在要做一个下拉菜单,从数据库中取出了学院以后,存在request中,在显示页面,需要通过一个select将其显示出来
代码如下:
<%      //以下是从request中得到所要的信息。
        ArrayList<Academy> acaList = (ArrayList<Academy>)request.getAttribute("acaList"); //所有学院
        ArrayList<String> acaNameList = new ArrayList<String>();
        for(int i=0; i<acaList.size(); i++){           //将所有学院的名字取出,放入ArrayList中
              Academy aca = (Academy)acaList.get(i);
              acaNameList.add(aca.getAcdname().trim());
          }
     %>
    <script type="text/javascript" language="javascript" >      function select(){
          var deptList = new Array(<%                     //将所有学院放入一个数组中
          for(int i=0; i<acaNameList.size(); i++){
              if(i<acaNameList.size()-1){
                  out.print("\""+acaNameList.get(i)+"\"" + ","); 
              }else{
                  out.print("\""+acaNameList.get(i)+"\""); 
              }
              
          }%>);          alert("我被执行了!");         //这一句测试用,结果没有执行          var dept = document.getElementById("s1"); //s1是select的id标识
          for(int i=0; i<deptList.length; i++){
              var op = new Option(i+"", deptList[i]+"");
              dept.options.add(op);
          }
      }
</script>
  </head>
  
<body onload="select()">
.........................
<select id="s1" name="s1">
</selected>
</body>
现在当运行的时候,没有结果,而且alert也没有执行!!请问高手如何解决???

解决方案 »

  1.   

    你还得温习一下asp,js中不能直接使用C#中的变量的。
      

  2.   

    应该是js 出错了你看下页面的源代码var deptList = new Array(后面 是什么样的
      

  3.   

    难道JSP中的<c:forEach>都不用了吗?
      

  4.   


    后面是就是从request中获取的内容。应该没有错啊?郁闷!!!
      

  5.   

    *------------------------------------------------------  
     *说明:select元素javascript常用操作  
     * 1.判断是否存在指定value的Item  
     * 2.加入一个Item  
     * 3.删除值为value的所有Item  
     * 4.删除某一个index的选项  
     * 5.更新第index项的value和text  
     * 6.设置select中指定text的第一个Item为选中  
     * 7.设置select中指定value的第一个Item为选中  
     * 8.得到当前选中项的value  
     * 9.得到当前选中项的index  
     *  10.得到当前选中项的text  
     * 11.清空所有选项  
    -------------------------------------------------------*/  
    //1.判断是否存在指定value的Item   
    function ExistValue(obj,value){   
        for(var i=0;i<obj.options.length;i++){   
            if(obj.options[i].value == value){   
                return true;   
            }   
        }         
        return false;   
    }   
    //2.加入一个Item   
    function AddItem(obj,text,value){   
     var varItem = new Option(text,value);   
     obj.options.add(varItem);   
    }   
    //3.删除值为value的所有Item   
    function RemoveItems(obj,value){   
     for(var i=0;i<obj.options.length;i++){   
      if(obj.options[i].value == value){   
       obj.remove(i);   
      }   
     }           
    }   
    //4.删除某一个index的选项   
    function RemoveItem(obj,index){   
     obj.remove(index);   
    }   
      
    //5.更新第index项的value和text   
    function UpdateItem(obj,index,value,text){   
     obj.options[index].value = value;   
     obj.options[index].text = text;   
    }   
               
    //6.设置select中指定text的第一个Item为选中   
    function SelectItemByText(obj,text){       
        var isExit = false;   
        for(var i=0;i<obj.options.length;i++){   
            if(obj.options[i].text == text){   
                obj.options[i].selected = true;   
                return true;   
            }   
        }   
     return false;   
        
    }   
    //7.设置select中指定value的第一个Item为选中   
    function SelectItemByValue(obj,value){       
        var isExit = false;   
        for(var i=0;i<obj.options.length;i++){   
            if(obj.options[i].value == value){   
                obj.options[i].selected = true;   
                return true;   
            }   
        }   
     return false;   
        
    }   
    //8.得到当前选中项的value,index,text   
    function GetValue(obj){   
     return obj.value;    
    }   
    //9.得到当前选中项的index   
    function GetIndex(obj){   
     return obj.selectedIndex;    
    }   
    //10.得到当前选中项的text   
    function GetText(obj){   
     return obj.options[obj.selectedIndex].text;   
    }   
    //11.清空所有选项   
    function Clear(obj){   
     obj.options.length = 0;    
    }  
      

  6.   

    没看明白,你有需求是要用JS操用select?为什么不做成自定义控件或用Ajax?
    如果你真要像你这样。后台数值绑定,在前台声明一个变量绑定它。
      

  7.   

    var dept = document.getElementById("s1"); //s1是select的id标识
              for(int i=0; i<deptList.length; i++){
                  var op = new Option(i+"", deptList[i]+"");
                  dept.options.add(op);
              }这个for循环当中的变量i类型声明应该用  var 。。
      

  8.   

    acaNameList是java代码啊 不能直接在js里用吧?
      

  9.   

    不需要用script,直接在select内循环加option就好了。