オプションをなんたらかんたら(ちょっと・・・メモリーリークする)

  • javascriptでoptionタグを削除したり、削除する前の状態に...

http://oshiete.goo.ne.jp/qa/5857375.html
こういうのはどうだろう?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
</style>

<body>
 <form action="#">
  <p>
   <input type="radio" name="color_type" value="モノクロ" id="rd0" checked="checked" onclick="LIST(this.value);">モノクロ
   <input type="radio" name="color_type" value="カラー" id="rd1" onclick="LIST(this.value);">カラー

   <select name="list">
    <optgroup label="モノクロ">
     <option value="10" >A4</option>
     <option value="20" >B4</option>
     <option value="30" >A3</option>
    </optgroup>

    <optgroup label="カラー">
     <option value="50" >A4</option>
     <option value="70" >B4</option>
    </optgroup>
   </select>
  </p>
 </form>


<script type="text/javascript">

var SelectGroup = function ( target/*Element*/ ) {
 var buffer = document.createElement( 'SELECT' ); //だからdocumentを・・・

 return function ( v/*String*/ ) {
  var obj
  var cnt;

  //elementだけをbufferに全部移動。それ以外削除
  while( obj = target.firstChild ) {
   1 == obj.nodeType ? 
    buffer.appendChild( obj ):
    target.removeChild( obj );
  }
  
  //ラベルが同一のものを戻す
  for( cnt = 0; obj = buffer.childNodes[ cnt++ ]; )
   if( 'OPTGROUP' === obj.nodeName && obj.label == v ) {
    target.appendChild( obj );
    break;
   }

 }
};


var LIST = SelectGroup( document.forms[ 0 ].elements[ 'list' ] );

LIST('モノクロ');

</script>
</body>
</html>