連動プルダウン/ConnectedSelect() のIE対応
http://d.hatena.ne.jp/Mars/20071109
参考にした↑のサイトのものが動かなかったので、自分で直してみる。
FFだと、defaultSelected をちゃんと適当に解釈して初期値として選択状態にしてくれるんだけど、IEは ConnectSelect() を実行することによって、プルダウンそのものが一旦初期化されてしまい、defaultSelected は勝手に 0 にされてしまう。
なので、実行する前にvalueを覚えておいて、最後にvalueでつき合わせてやることにする。
泥臭〜。IE嫌い。
エラーがひとつ残ってしまったので模索中。<<解消。
function ConnectedSelect(selIdList){ var defval = new Array(); // 追加 for(var i=0;selIdList[i];i++) { var obj = document.getElementById(selIdList[i]); defval[i] = obj.options[obj.selectedIndex].value; // 追加 var CS = new Object(); if(i){ CS.node=document.createElement('select'); var GR = obj.getElementsByTagName('optgroup'); while(GR[0]) { CS.node.appendChild(GR[0].cloneNode(true)); obj.removeChild(GR[0]); } } if(selIdList[i+1]) { CS.nextSelect = document.getElementById(selIdList[i+1]); obj.onchange = function(){ConnectedSelectEnabledSelect(this)}; } else { CS.nextSelect = false; } obj.ConnectedSelect = CS; } for(var i=0;selIdList[i];i++) { var obj = document.getElementById(selIdList[i]); if(selIdList[i+1]) { obj.onchange(); } // ↓追加 for(var j=0;j
11/11 追記。
nextSelect で要素が無いと undefined になるみたいだから、if 判定を追加しておく。