IEでinnerHTML、selectとらないとか
「IEはselectやtextareaに対してinnerHTMLが利かない。」
そんなことはつゆ知らず。
二つのSELECTタグの中でOPTIONタグを相互に行き交うフォームを作ったところ、
IEでは全く動いていなかった。
というわけで解決策
HtmlElement.OuterHtml プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.outerhtml(VS.80).aspx
JavaScript の要素追加・変更で innetHTML と DOM の速度検証
http://www.drk7.jp/MT/archives/001313.html
IEの判定をどうするか
ここではdocument.allがTRUEかどうかで判定しているけど、
var isMSIE = /*@cc_on!@*/false;
としたほうがいいかもしれない。
/** * リストに追加 */ function addList() { var len = document.getElementById('leftlist').length; var i = 0; var leftlList = new Array; var rightList = new Array; var rightTextList = new Array; for (i = 0; i < len; i++) { var option = document.getElementById('leftlist').options[i]; if (option.selected) { rightList.push(option.value); rightTextList.push(option.text); } } var len = document.getElementById('rightlist').length; for (i = 0; i < len; i++) { var option = document.getElementById('rightlist').options[i]; if (option.selected) { leftList.push(option.value); } } if(document.all) { outerData = '<div id="sendid"><select name="send[]" id="send" size="10" multiple="multiple" >'; for(i=0;i < sendMailList.length; i++){ if(!in_array(rightList[i], leftList)){ outerData = outerData+ '<option value="'+rightList[i]+'" selected>'+rightTextList[i]+'</option>'; } } outerData = outerData+ '</select></div>'; document.getElementById('rightlist').outerHTML = outerData; } else { var innerData = ''; for(i=0;i < rightList.length; i++){ if(!in_array(rightList[i], leftList)){ innerData = innerData+ '<option value="'+rightList[i]+'" selected>'+rightTextList[i]+'</option>'; } } exist = document.getElementById('send').innerHTML; document.getElementById('send').innerHTML= exist + innerData; } }
なんだか古臭いJavascriptになってしまったけど、ひとまず解決