我想用JavaScript实现一个二级下拉联动。请问需要把从上一个页面传递过来的一个ArrayList<CateGory>对象,其中的CateGory含有两个属性 int id和String name;
 转存到JavaScript中的Array数组中去,以实现我需要的功能。经过测试传递过来的ArrayList<CateGory>正确有效,就是在Js中的转存存在问题,希望各位高手解除我的困惑,小弟感激不尽。<script language="javascript">
//数据源,在跳转的时候传递过来的ArrayList接收
//然后通过读出的循环来转换
//初始化Array() JavaScript实现
  var array=new Array();
<%
//读出传送来的Lisy对象
List<CateGory> yy=new ArrayList<CateGory>();
yy=(List<CateGory>)request.getAttribute("bigMenu");
for(int i=0;i<yy.size();i++){
CateGory temporaryCateGory=new CateGory();
temporaryCateGory=yy.get(i);
%>
array[<%=i%>]=new Array("<%=temporaryCateGory.getId()%>","根目录","<%=temporaryCateGory.getName()%>");
<%
}
%>  //--------------------------------------------
  //这是调用代码,以下代码测试可用
  var liandong=new CLASS_LIANDONG_YAO(array) //设置数据源
  liandong.firstSelectChange("根目录","s1"); //设置第一个选择框
  liandong.subSelectChange("s1","s2"); //设置子级选择框
  liandong.subSelectChange("s2","s3");
</script>

解决方案 »

  1.   

      var array=new Array();
      array[0]=new Array("华南1地区","根目录","华南地区"); //数据格式 ID,父级ID,名称
      array[1]=new Array("华北1地区","根目录","华北地区");
      array[2]=new Array("上海","华南地区","上海");
      array[3]=new Array("广东","华南地区","广东");
      array[4]=new Array("徐家汇","上海","徐家汇");
      array[5]=new Array("普托","上海","普托");
      array[6]=new Array("广州","广东","广州");
      array[7]=new Array("湛江","广东","湛江");我是想存成此中形式的,有没有好办法!
      

  2.   

    要生成此种模式的代码array[7]=new Array("湛江","广东","湛江");既for(int i=0;i<iter.size();i++){
      array[<%=i%>]=new Array("<%=类名.id%>","<%=类名.name%>","<%=类名.其他%>");
    }
    即通过代码将传递过来的ArrayList中的所有对象的属性分别放到Js的array数组中,并且要求按照最上面的那种格式!
      

  3.   

     var array=new Array(); 
      array[0]=new Array("华南1地区","根目录","华南地区"); //数据格式 ID,父级ID,名称 
      array[1]=new Array("华北1地区","根目录","华北地区"); 
      array[2]=new Array("上海","华南地区","上海"); 
      array[3]=new Array("广东","华南地区","广东"); 
      array[4]=new Array("徐家汇","上海","徐家汇"); 
      array[5]=new Array("普托","上海","普托"); 
      array[6]=new Array("广州","广东","广州"); 
      array[7]=new Array("湛江","广东","湛江"); 
      

  4.   

    <%
    String arr = "";
    arr += "[";
    for(int i=0;i <yy.size();i++){
      if(i!=0){
        arr+=",";
      }
      arr += "['"+yy.get(i).id+"','"+yy.get(i).name+"']"
      array[ <%=i%>]=new Array(" <%=类名.id%>"," <%=类名.name%>"," <%=类名.其他%>");

    arr+="]";
    pageContext.setAttribute("list",arr);
    %>
    <script>
    var array = <%= arr %>;
    </script>
    这样就行了,Array的效率很低的,js中尽量不要用
      

  5.   


    <% 
    //读出传送来的Lisy对象 
    List <CateGory> yy = (List<CateGory>)request.getAttribute("bigMenu"); %>
    var array = new Array(<%=yy.size()%>); 
    <%
    for(int i = 0; i < yy.size(); i++){ 
      CateGory temporaryCateGory=new CateGory(); 
      temporaryCateGory=yy.get(i); 
    %> 
      array[<%=i%>] = new Array("<%=temporaryCateGory.getId()%>", "根目录", "<%=temporaryCateGory.getName()%>"); 
    <% 

    %>