推荐几个WEB中常用的工具方法

  1. /**
  2.   *@class DOM工具类,提供了一些方便的函数页面元素的一些操作
  3.   *@constructor
  4.   *@return DomUtils
  5. */
  6. function DomUtils(){
  7. }
  8. /**
  9.  *从待选列表移动一项到已经选择列表
  10.  *@param {Object} fbox  -待选项目列表
  11.  *@param {Object} tbox  -选择了的项目列表
  12.  *@param {string} fmsg -提示信息(待选项目列表无数据...)
  13.  *@param {string} tmsg  -提示信息(请选择数据....)
  14.  *@version 1.0 适用范围:IE6.0/opera 8.5/firefox1.5
  15.  *
  16.  */
  17. DomUtils.move=function(fbox,tbox,fmsg,tmsg)  {
  18.     var id =0;
  19.     if(fbox.options.length==0){
  20.       alert(fmsg);
  21.       return false;
  22.     }
  23.     for(var i=0; i<fbox.options.length; i++)  {
  24.      if(fbox.options[i].selected)  {
  25.          id = 1;
  26.         // 增加项目列表到右侧
  27.         var no = new Option();
  28.         no.value = fbox.options[i].value
  29.         no.text = fbox.options[i].text
  30.         tbox.options[tbox.options.length] = no;
  31.         //  清空左侧的项目列表
  32.         fbox.options[i].value = ""
  33.         fbox.options[i].text = ""
  34.      }
  35.    }
  36.    if(id==0){
  37.        alert(tmsg);
  38.        return false;
  39.    }
  40.    DomUtil.bumpUp(fbox);
  41. }
  42. /**
  43.  *一般不直接调用该方法,该方法用于
  44.  *把列表中value属性为""的option清空,其他相应的移上去。
  45.  *@param {Object} box  -列表框对象
  46.  *@version 1.0 适用范围:IE6.0/opera 8.5/firefox1.5
  47.  *
  48.  */
  49. DomUtils.bumpUp=function(box)  {
  50.   for(var i=0; i<box.options.length; i++)  {
  51.      if(box.options[i].value == "")  {
  52.        for(var j=i; j<box.options.length-1; j++)  {
  53.          box.options[j].value = box.options[j+1].value;
  54.          box.options[j].text = box.options[j+1].text;
  55.        }
  56.        var ln = i;
  57.        break
  58.      }
  59.    }
  60.    if(ln < box.options.length)  {
  61.      box.options.length -= 1;
  62.      DomUtil.bumpUp(box);
  63.    }
  64. }
  65. /**
  66.  *全部移动到已选择列表
  67.  *@param {Object} fbox  -待选项目列表
  68.  *@param {Object} tbox  -选择了的项目列表
  69.  *@param {string} msg  -提示信息(待选项目列表无数据...)
  70.  *@version 1.0 适用范围:IE6.0/opera 8.5/firefox1.5
  71.  *
  72.  */
  73. DomUtils.moveAll=function(fbox,tbox,msg){
  74.     if(fbox.options.length==0){
  75.       alert(msg);
  76.       return false;
  77.     }
  78.     for(var i=0; i<fbox.options.length; i++)  {
  79.         // 增加项目列表到右侧
  80.         var no = new Option();
  81.         no.value = fbox.options[i].value
  82.         no.text = fbox.options[i].text
  83.         tbox.options[tbox.options.length] = no;
  84.         //  清空左侧的项目列表
  85.         fbox.options[i].value = ""
  86.         fbox.options[i].text = ""
  87.      }
  88.    DomUtil.bumpUp(fbox);
  89. }
  90. /**
  91.  *子复选框改变父复选框状态,当父复选框对应的子复选框的选中状态改变后父复选框的状态也要跟着变化,在这里我们改变父复选框的background样式。
  92. 当名为b的复选框的被点击时,名为a的复选框的选中状态将会发生相应变化。如b全选中,则a也呈现选中状态,如b不全选,则b的background呈现#949494颜色,如b全不选,则a呈现未选中状态
  93.  *@param{string} arentCheck:父复选框的引用,
  94.  *@param{string} childCheck:子复选框名
  95.  *@param{boolean} isChild:是否是子复选框主动变化了,true表示是,false表示是父复选框变化
  96.  *@type 无
  97.  *@returns 无
  98.  *@version 1.0  适用范围:IE6.0
  99.  */
  100. DomUtils.changeCheckbox=function(parentCheckBoxName,childCheckBoxName,isChild){
  101.     //子checkbox
  102.     var childCheckboxs=document.getElementByName(childCheckBoxName);
  103.     //父checkbox
  104.     var parentCheckBox=document.getElementByName(parentCheckBoxName);
  105.     //如果是父checkbox变化,则让子checkbox状态和父保持一致
  106.     if(!isChild){
  107.             for (var j=0;j<childCheckboxs.length;j++){
  108.             if ( childCheckboxs[j].type == "checkbox"){
  109.                 childCheckboxs[j].checked = parentCheckBox[0].checked;
  110.             }
  111.         }
  112.     }
  113.     
  114.     //所有子复选框长度
  115.     var childNum = 0;
  116.     //所有被选复选框长度
  117.     var checkedNum = 0;
  118.     
  119.     for (var j=0;j<childCheckboxs.length;j++){
  120.         if (childCheckboxs[j].type == "checkbox"){
  121.                 childNum++;
  122.             if(childCheckboxs[j].checked){
  123.                 checkedNum++;
  124.             }
  125.         }
  126.     }
  127.     //一个都没有选中
  128.     if(checkedNum == 0){
  129.         parentCheckBox[0].checked = false;
  130.     }else if(childNum != checkedNum){
  131.         parentCheckBox[0].checked = false;
  132.     }else if(childNum == checkedNum){
  133.         parentCheckBox[0].checked = true;
  134.     }
  135.     return;
  136. }
  137. /**
  138.  *
  139.  * 选择复选框
  140.  *@param{string} checkboxname:复选框名字
  141.  *@param{string or array} targetValue:要设定的值或值数组
  142.  *@type 无
  143.  *@returns 无
  144.  *@version 1.0  适用范围:IE6.0
  145.  */
  146. DomUtils.selectCheckbox=function(checkboxname,targetValue){
  147.  var objs = document.getElementByName(checkboxname);
  148.   if(objs){
  149.     var array=targetValue;
  150.     if(false==(targetValue instanceof Array)){//不是数组,,则转换为数组
  151.         array=new Array();
  152.         array.push(targetValue);
  153.     }
  154.  
  155.      for(var i=0;i<objs.length;i++){
  156.         var obj=objs[i];
  157.        if(existInArray(obj.value)){
  158.           obj.checked=true;
  159.        }
  160.      }
  161.   }else{
  162.     alert('no checkbox named ['+checkboxname+']');
  163.     return false;
  164.   }
  165.   return true;
  166. }
  167. DomUtils.existInArray=function(array,value){
  168.  for(var i=0;i<array.length;i++){
  169.    if(array[i]==value){
  170.       return true;
  171.    }
  172.  }
  173.  return false;
  174. }
  175. /**
  176.  *
  177.  * 选择单选
  178.  *@param{string} radioname:单选名字
  179.  *@param{string } targetValue:要设定的值
  180.  *@type 无
  181.  *@returns 无
  182.  *@version 1.0  适用范围:IE6.0
  183.  */
  184. DomUtils.selectRadio=function(radioname,targetValue){
  185.  var objs = document.getElementByName(radioname);
  186.   if(objs){
  187.      for(var i=0;i<objs.length;i++){
  188.         var obj=objs[i];
  189.        if(obj.value==targetValue){//找到了
  190.           obj.checked=true;
  191.           break;
  192.        }
  193.      }
  194.   }else{
  195.     alert('no radio named ['+radioname+']');
  196.     return false;
  197.   }
  198.   return true;
  199. }
  200. /**
  201. *
  202. * 选择下拉框中的指定值的元素
  203.  * eg: DomUtils.selectOption('ids',1)
  204. */
  205. DomUtils.selectOption=function(objId, targetValue){
  206.   var obj = document.getElementById(objId);
  207.   if(obj){
  208.     var options = obj.options;
  209.     if(options){
  210.       var len = options.length;
  211.       for(var i=0;i<len;i++){
  212.         if(options[i].value == targetValue){
  213.           options[i].defaultSelected = true;
  214.           options[i].selected = true;
  215.           return true;
  216.         }
  217.       }
  218.     } else {
  219.       alert('missing element(s)!');
  220.     }
  221.   } else {
  222.     alert('missing element(s)!');
  223.   }
  224. }


这几个方法用处在哪里呢?我分别举例说明一下:
    DomUtils.move这个方法,适用于两个select选择框,比如A和B,要把A和B中的元素相互移动的情况,可能A是待选择的美女,B是你已选 择的美女,那么你还想选几个的话,你就可以用DomUtils.move(A,B,'没美女可以选了','你还选美女啊')

    DomUtils.changeCheckbox,适用于那种全选或者去掉全选的checkbox处理,例如:A是全选checkbox, 剩下的全部是同名字的其他checkbox,如果你选择了A,那么其他的checkbox就默认全选,如果你取消了A就默认取消其他全部选项。如果你一个 一个的选择了checkbox,当你选择完的时候,A也默认勾选上了。
  
    DomUtils.selectCheckbox,这个适用于你有一个或者几个值,他们对应都是某个名字组下checkbox的值,自动让他们选中。
   DomUtils.selectRadio 同上面一样,和制定值相等的radio才选择。

   DomUtils.selectOption 这个是选择只有指定值的选项。


 一般情况下,我们页面的功能都是增删改查, 当你修改某个页面的时候,你页面中可能会有这些元素出现,那么你可能就得选中某些值,那么用这些工具方法,一句JS代码就搞定了。岂不是很简单!呵呵,欢迎扔砖头!
posted @ 2008-11-04 09:09  lovingprince  阅读(177)  评论(0编辑  收藏  举报