`
gbtan
  • 浏览: 80532 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IE的innerHTML只读

阅读更多

  一个是写的级联控件,在动态创建select的option时遇到的问题。
   刚开始的做法是在后台通过dwr返回 键值对时,使用prototype的模板,生成一串innertHTML然后设置到select节点进去,这种方式在FF上能正常处理,但是在ie下打死都出不来效果。所以这种方法就被抛弃了。
    接着的方式是,通过document.createElement('option')来创建节点,然后将option节点动态append到 select节点下,这种方法在ie下显示正常,但是在ff上却是反常的,老是提示“String contains invalid character”。这种方法解着也被抛弃。
   最后的方法是现现在的这种方式:
   select.options[select.options.length] = new Option(name,value);
这种方法终于在火狐和ie上显示都正常 了。感谢网络上庞大的知识库,在浩瀚的知识库上,我找到很多与我有同样问题的人,同时在最终找到了解决方式。据说,最后一种方法是w3c建议的,兼容性最好的一个。

        第二个问题是写分页控件时,替换表格中的innerHTML时候老是报,运行期异常。
     现在确认是在FF中这样替换是没有问题的,到时再IE中是不行的,因为ie中的table等的innerHTML是只读的。最后的做法就是干脆让table包含在div中,然后替换包在表格外面的div的innerHTML。

 

  select和option的操作:

  清空select 的项

// 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的当前选中项的text

//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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics