-1

別のドロップダウンの値に基づいてドロップダウンを自動的に選択しようとしています。2番目のドロップダウンには、最初のドロップダウンよりも多くの値があります。最初のドロップダウンを選択すると、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> 
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 に答える