options是null或不是对象

时间:2012-11-07 09:21:04

标签: javascript html

我正在尝试根据另一个下拉列表中的值自动选择下拉列表。第二次下拉将比第一次下降更多。如果我选择第一个下拉列表,则应自动选择第二个下拉列表。我尝试了以下代码并收到错误: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> 

2 个答案:

答案 0 :(得分: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对象的更多详细信息,请参阅此link

答案 1 :(得分:0)

我认为你的问题在var del = document.getElementById('data').value;。如果您要访问所选内容,则应使用var del = document.getElementById('data');,而不使用.value。这样变量del应该有.options数组。