IEのinnerHTML読み取り専用


一つは、作成したカスケードコントロールで、動的にselectのoptionを作成する時に発生する問題です.   最初のやり方はバックグランドでdwrを通してキーの値を返した時に、プロトタイプのテンプレートを使ってinnertHTMLを生成してselectノードにセットします.この方式はFFで正常に処理できますが、ieで打ち殺しても効果がありません.だからこの方法は捨てられました.    次に、document.creat Elementによってノードを作成し、その後、オプトモーションノード動的なappedをselectノードの下に置いて、この方法はieの下で正常に表示されるが、ffの上では異常であり、常に「String contains invalid character」を提示する.この方法は解きほぐしても捨てられます.   最後の方法は現在の方式です.   select.options[select.options.length]=new Option(name,value);この方法はやっとフォックスとieで正常に示されました.ネット上の膨大な知識庫に感謝します.膨大な知識庫の中で、私と同じ問題を持っている人をたくさん見つけました.同時に解決方法を見つけました.最後の方法はw 3 cが提案した、互換性が一番いいと言われています.        二つ目の問題は、改ページコントロールを書く時、表のinnersを交替する時にいつも報告して、運行期間は異常です.     今確認したのはFFの中でこのように置き換えても大丈夫です.またIEの中ではだめです.ieの中のtableなどのinnerHTMLは読み取り専用ですから.最後のやり方は、いっそテーブルをdivに含めて、表の外にあるdivのinnerHTMLを差し替えることです.
 
  selectとoptionの操作:
  プロジェクトの項目を空にする
// document.all.objSelect.options.length = 0;
第一行を残したら
// document.all.objSelect.options.length = 1;
selectオプションにValue=「paraValue」のItemがあるかどうかを判断します.
function jsSelectIsExitItem(objSelect,objItemValue)
{
     var isExit = false;
     for(var i=0;i<objSelect.options.length;i++)
     {
         if(objSelect.options[i].value == objItemValue)
         {
             isExit = true;
             break;
         }
     }     
     return isExit;
}
selectオプションにItemを追加します.
function jsAddItemToSelect(objSelect,objItemText,objItemValue)
{
     //      
     if(jsSelectIsExitItem(objSelect,objItemValue))
     {
         alert(" Item Value     ");
     }
     else
     {
         var varItem = new Option(objItemText,objItemValue);
//       objSelect.options[objSelect.options.length] = varItem;
         objSelect.options.add(varItem);
         alert("    ");
     }   
}
selectオプションからItemを削除します.
function jsRemoveItemFromSelect(objSelect,objItemValue)
{
     //      
     if(jsSelectIsExitItem(objSelect,objItemValue))
     {
         for(var i=0;i<objSelect.options.length;i++)
         {
             if(objSelect.options[i].value == objItemValue)
             {
                 objSelect.options.remove(i);
                 break;
             }
         }       
         alert("    ");           
     }
     else
     {
         alert(" select       ");
     }   
}
selectオプションのvalue=「paraValue」のtextを変更すると「paraText」となります.
function jsUpdateItemToSelect(objSelect,objItemText,objItemValue)
{
     //      
     if(jsSelectIsExitItem(objSelect,objItemValue))
     {
         for(var i=0;i<objSelect.options.length;i++)
         {
             if(objSelect.options[i].value == objItemValue)
             {
                 objSelect.options[i].text = objItemText;
                 break;
             }
         }    alert("    ");           
     }
     else
     {
         alert(" select       ");
     }   
}
       select中text=「paraText」の最初のItemを選択するように設定します.
function jsSelectItemByValue(objSelect,objItemText)
{   
     //      
     var isExit = false;
     for(var i=0;i<objSelect.options.length;i++)
     {
         if(objSelect.options[i].text == objItemText)
         {
             objSelect.options[i].selected = true;
             isExit = true;
             break;
         }
     }     
     //Show   
     if(isExit)
     {
         alert("    ");           
     }
     else
     {
         alert(" select       ");
     }   
}
selectのvalue=「paraValue」のItemを選択します.
//document.all.objSelect.value = objItemValue;
selectの現在選択されているアイテムのvalueを取得します.
//var currSelectValue = document.all.objSelect.value;
selectの現在選択されているアイテムのテキストを取得します.
//var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text;
selectの現在選択されている項目のIndexを取得します.
//var currSelectIndex = document.all.objSelect.selectedIndex;
完全な例
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>js  select   ,  ,  ,         </title>
<meta name="keywords" content="javascript select options text value add modify delete set">
<meta name="description" content="javascript select options text value add modify delete set">
<script language="javascript">
<!--
function watch_ini(){ //   
for(var i=0; i<arguments.length; i++){
   var oOption=new Option(arguments[i],arguments[i]);
   document.getElementById("MySelect")[i]=oOption;
}
}
function watch_add(f){ //   
   var oOption=new Option(f.word.value,f.word.value);
   f.keywords[f.keywords.length]=oOption;
}
function watch_sel(f){ //   
f.word.value = f.keywords[f.keywords.selectedIndex].text;
}
function watch_mod(f){ //   
f.keywords[f.keywords.selectedIndex].text = f.word.value;
}
function watch_del(f){ //   
f.keywords.remove(f.keywords.selectedIndex);
}
function watch_set(f){ //   
var set = "";
for(var i=0; i<f.keywords.length; i++){
set += f.keywords[i].text + ";";
}
confirm(set);
}
//-->
</script>
</head>
<body>
<form name="watch" method="post" action="">
<select id="MySelect" name="keywords" size="10" onchange="watch_sel(this.form)"></select><br>
<script language="javascript">
<!--
watch_ini(" "," "," "," "," "," "," "," "); //      
//-->
</script>
<input type="text" name="word" /><br />
<input type="button" value="  " onclick="watch_add(this.form);" />
<input type="button" value="  " onclick="watch_mod(this.form);" />
<input type="button" value="  " onclick="watch_del(this.form);" />
<input type="button" value="  " onclick="watch_set(this.form);" />
</form>
</body>
</html>