-1

我正在尝试根据另一个下拉列表中的值自动选择下拉列表。第二个下拉列表将具有比第一个更多的值。如果我选择第一个下拉菜单,则应自动选择第二个。我尝试了以下代码并收到错误:Options is null or not an object.???

<script type="text/javascript">
function showState(me){
var values = ''; //populate selected options
for (var i=0; i<me.options.length; i++)
    if (me.options[i].selected)
         values += me.options[i].value + ',';
    values = values.substring(0, values.length-1);
    var selected=[values];
    var del = document.getElementById('data').value;
    for(var i=0; i<del.options.length; i++);
    {
  if(values[i] == del.options[i])
  {
      del.options[i].selected;
      }
    }
  }
</script>

<select multiple="multiple" onchange="showState(this);">
    <option value="1">Test1</option>
    <option value="3">Test3</option>
    <option value="4">Test4</option>
</select> 


 <select name="data" id="data" multiple="multiple">
    <option value="1">Test1</option>
    <option value="2">Test2</option>
    <option value="3">Test3</option>
    <option value="4">Test4</option>
</select> 
4

2 回答 2

1

我认为您应该在代码中进行一些更正,如下所示:

<script type="text/javascript">
function showState(me){
var values = ''; //populate selected options
for (var i=0; i<me.length; i++)
    if (me.options[i].selected)
        values += me.options[i].value + ',';
values = values.substring(0, values.length-1);
var selected=[values];
var del = document.getElementById('data');
for(var i=0; i<del.length; i++)
  {
    for(var j=0;j<values.length;j++)
     {  
         if(values[j] == del.options[i].value)
           {
              del.options[i].selected = true;
           }
      }  
  }
}
</script>

有关 javascript 中 Select 和 Option 对象的更多详细信息,您可以参考此链接

于 2012-11-07T09:42:49.573 回答
0

我想你的问题就在这里var del = document.getElementById('data').value;。如果要访问选择选项,则应使用var del = document.getElementById('data');,而不使用.value. 这样变量del应该有.options数组。

于 2012-11-07T09:24:30.197 回答