现在bean文件中有一个定义为public类型的哈西表:
public Hashtable Hasseq_ok = new Hashtable();
经过操作,它获得从数据库中检索出来的值,并赋值给了一个下拉菜单,下来菜单如下:
<td><select name="seq_ok" style="display:none; font-size:16px " onFocus="onfocus_list(this)" onKeyDown="onkeydown_list(this)">
<%
if (!(ID.equals("0")))
{
  Model3.list("seq",out);
}
%>
</select></td>
“<%...%>”中是表示将哈西表得值赋给下拉菜单。现在需要将下拉菜单中的每一个值与一个变量val比对。无论采用什么方法,始终要做循环。由于哈西表的大小因数据多少而变,并不固定,故需要获得哈西表的长度,这是后话。现在的问题是,我怎样将哈西表中的数据引入到javascript中来进行循环比对?如果采用<%=Model3.Hasseq_ok.get(String.valueOf(i))%>那么其中变量i是不能使用的,因为《%=....%》中间的必须是写死的,所以这样不能循环比对。也就是说,如果要引用哈西表中的值,每一个i必须是确定的值,不能是变量。另外一个办法,是用已经导入数据的下拉菜单来想办法。但是下拉菜单中的value在赋值之后,就会有多个value,如果我采用document.form1.select.value.substring(0,2);取其值的话,还是没有办法进行循环比对。急切希望哪位高人给与指点!

解决方案 »

  1.   

    我想你可以在jsp初始化的时候通过Hashtable动态的生成一个javascript方法
      

  2.   

    jsp中和java代码和javascript是不会同时执行的,因为java代码是在服务器端执行的,而javascript代码是在客户端执行的,所以两者没有办法进行比较。如果要比较的话,就只能在客户端进行,需要将哈希表中数据保存在一个javascript的数组中,到了客户端,两个数组再进行比较。
      

  3.   

    将哈希表中数据保存在一个javascript的数组中
    好办法!
      

  4.   

    对!我就是这个意思:“将哈希表中数据保存在一个javascript的数组中”但是现在的问题就是怎样将哈希表中数据保存在一个javascript的数组中。已经说过了,哈西表的长度是不确定的,我可以用Hasseq_ok.size();的方法得到哈西表的长度,用来定义javascript中数组的长度,可是怎样按照顺序将数据一一对应的写入呢?比如:定义数组为x[],那么Hasseq_ok.get(String.valueOf(0))的值要写入x[0]中,Hasseq_ok.get(String.valueOf(1))的值要写入x[1]中,以此类推。关键是哈西表长度的不确定,javascript代码就不能写死,那就又回到怎样循环的问题上了
      

  5.   

    也就是说,只要解决了,怎样“将哈希表中数据保存在一个javascript的数组中”,这个问题就算完成了。万望高手赐教阿~~