javascript全局数组问题

时间:2011-08-26 14:12:56

标签: javascript

考虑一个场景

我有javascript数组,声明为全局

例如:

 var globalarray=new Array();

接下来我有两个多选框

  • selectboxa
  • selectboxb

selectbox中的所有选项值都是动态的, 如果我从selectboxa和selectboxb中选择多个值。我在全局数组中收集选定的值。

重要提示:如果我从selectboxa或selectboxb中选择值没有问题,但如果我从selectboxa和selectboxb中选择它会产生问题

问题:保存时我从数组中收集选定的值,如果我从selectboxa中选择4个值,然后从selectbox b中选择接下来的3个值,或者我这样改变,最后它包含全局数组中的所有值,但我不想要比如只使用一个全局数组并单独获取selectboxa值,并且可以同时选择b b值。

如果有任何疑问,请问我。

1 个答案:

答案 0 :(得分:0)

我认为我知道你想要什么......

var globalObject = {
  selecta:[],
  selectb:[]
}
function setSel(sel) {
  globalObject[sel.name].length=0;
  for (var i=sel.selectedIndex, n=0;i<sel.options.length;i++) {
    if (sel.options[i].selected) globalObject[sel.name][n++]=sel.options[i].value;
  }
}

<select name="selecta" onChange="setSel(this)">
.
.
.
<select name="selectb" onChange="setSel(this)">

也许这就是

var globalArray = [];

function setSel(theForm) {
  var sela = form.selecta;
  var selb = form.selectb;
  globalArray.length=0;
  for (var i=0, n=0;;i++) {
    if (sela.options.length<i && sela.options[i].selected) globalArray[n++]="a."+i+":"+sela.options[i].value;
    if (selb.options.length<i && selb.options[i].selected) globalArray[n++]="b."+i+":"+selb.options[i].value;
   }
}

<select name="selecta" onChange="setSel(this.form)">
.
.
.
<select name="selectb" onChange="setSel(this.form)">