1

我创建了一个简单的下拉列表,它是从以前的下拉列表中填充的。

我如何使所有选择?

下面提到的是填充它的javascript代码。

function OnClkAddButtonServer(form)
{
    var selObj = document.getElementById('List1');
     var selObj2 = document.getElementById('List2');

      var i;
      var count = selObj2.options.length;

      for (i=0;i<selObj.options.length;i++) 
      {
         if (selObj.options[i].selected) 
         {
               var option = new Option(selObj.options[i].text,selObj.options[i].value);
               option.title = selObj.options[i].text;
               selObj2.options[count] = option;
               count=count+1;
               selObj.options[i] = null;
               i--;
         }
      }
}

提前致谢

4

2 回答 2

1

如果您尝试选择列表中的所有选项,则需要 HTML 看起来像这样。

<select multiple="multiple">
  <option selected="selected">Volvo</option>
  <option selected="selected">Saab</option>
  <option selected="selected">Mercedes</option>
  <option selected="selected">Audi</option>
</select>

要选择新创建的选项,您可以使用 Javascript 方法更改 HTML 属性,如下所示。

document.getElementById("idElement").setAttribute("class", "className");

此示例要求您知道元素的 ID,但如果您以另一种方式引用该元素,则可以跳过浪费的查找。

于 2012-07-03T18:04:48.060 回答
0

首先,如果要选择所有下拉选项,则需要确保选择类型为多个。

例如,假设 selObj2 引用<select>标签 ( <select id = "List2">),您可能希望将“multiple”属性添加到选择标签:

<select id = "List2" multiple = "multiple">

如果你想在 JS 中做,你可以插入以下行:

selObj2.setAttribute("multiple", "multiple");

或者,

selObj2.multiple = true;

这当然是假设 selObj2 是一个<select>标签。但是,您必须启用多项选择才能选择多个选项。启用此属性后,您可以继续下一步...

现在,假设 selObj2.options 引用您希望选择的各个选项,您可以在 JS 中执行此操作(只需在函数 OnClkAddButtonServer 的结束大括号之前添加此块):

for (var i=0; i<selObj2.options.length; i++)
{
    selObj2.options[i].setAttribute("selected", true);
    // or,
    // selObj2.options[i].selected = true;
}

另外,请注意我使用的 for 循环:

var i=0;

这是因为我们在循环范围内创建了局部变量 i,这意味着如果我们想在循环之外使用 i,这两个实例不会冲突。如果您没有使用关键字“var”,那么变量 i 将可以在整个脚本中的任何位置访问(创建了一个全局变量)。将变量保持在本地是一个好习惯,而且由于人们倾向于在这些循环中经常使用 i 或 x 作为计数器,因此需要采取一些预防措施以避免任何令人讨厌的意外。

于 2012-07-04T07:37:48.777 回答