2012-11-07 81 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數組。