0

以前の選択で選択されたものに基づいて選択にオプションを表示したいのですが、javascriptでcreateOptionを使用してみましたが、親選択でオプションを変更するたびにオプションを作成し続けるため、方法が必要ですそれを達成するために、私のコードは次のとおりです。

function addsem(deg)
{
  var semnum,i;
  switch(deg)
  {
    case 'var1':numsem=8;
              break;
case 'var2':numsem=6;
              break;
    case 'var3':numsem=10;
              break;

case 'var4':numsem=4;
}
select1=document.getElementById('selsem');
var sem=new Array('I','II','III','IV','V','VI','VII','VIII','IX','X'); 

 for(i=0;i<numsem;i++)
 {
   var opt = new Option(sem[i],sem[i]);
 select.options.add(opt);
 }
}

私のhtmlコード:

  <select name="seldeg" id="seldeg" style="width:180px onChange="addsem(this.value);">
                <option value="deg">Select</option>
                <option value="var1">var1</option>
                <option value="var2">var2</option>
                <option value="var3">var3</option>
                <option value="var4">var4</option>
                </select>
<select name="selsem" id="selsem" style="width:180px;" onchange="" >
        <option  value="sem">Select</option>
</select>

異なる範囲の sem を表示するように選択したい。つまり、var4 の場合は I、II...IV、var2 の場合は I、II....VI

度の値を変更するたびに。

事前にありがとう

4

1 に答える 1

0

あなたの Javascript では、 でselect.options.addある必要がありますselect1.options.addstyle="width:180pxHTML に構文エラーがあります。属性を閉じていません。また、最初の選択を変更するたびにアイテムが重複しないように、選択からアイテムを削除する必要があります。

jsFiddle デモ

function addsem(deg) {
    var semnum, i;
    switch (deg) {
        case 'var1':
            numsem = 8;
            break;
        case 'var2':
            numsem = 6;
            break;
        case 'var3':
            numsem = 10;
            break;

        case 'var4':
            numsem = 4;
    }
    select1 = document.getElementById('selsem');

    // remove existing items
    while (select1.options.length) {
        select1.remove(0);
    }

    var sem = new Array('I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X');

    for (i = 0; i < numsem; i++) {
        var opt = new Option(sem[i], sem[i]);
        select1.options.add(opt); // changed to select1
    }
}
于 2013-08-11T14:15:33.783 に答える