2012-11-07 63 views
-2

我试图根据另一个下拉列表中的值自动选择下拉菜单。第二个下拉列表的值比第一个更多。如果我选择第一个下拉菜单,则应该自动选择第二个下拉菜单。我尝试了下面的代码,并得到错误: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> 
+0

有一些正确缩进的代码会有所帮助。我希望你所有的文件看起来都不像这样。 – Bojangles

+0

你也有一个嵌套for循环使用相同的变量遍历元素,这是不健康的 –

+0

当你选择第一选择的选项时,你想显示第二选择什么 – polin

回答

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中,你可以参考这个link

+0

第二个'for'行之后的';'仍然存在。 – Deestan

+0

@Deestan谢谢你的指示。 –

+0

我在IE8中试过上面的代码,它没有工作。 –

0

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