JS工具类——Select操作类

  1 function Select(){};
  2 /**
  3  * 根据指定的JSON对象来生成指定的select的options项(清除原来的options).
  4  */
  5 Select.create = function(/*string*/selectId,/*json object*/json) {
  6     Select.clear(selectId);
  7     Select.add(selectId, json);
  8 };
  9 /**
 10 * 该方法同create,只不过是在原来的基础上进行追加
 11 */
 12 Select.add = function(/*string*/selectId,/*json object*/json) {
 13     try {
 14         if (!json.options) return;
 15         for (var i = 0; i < json.options.length; i ++) {
 16             Select.addOption(selectId,json.options[i].value,json.options[i].text);
 17         }
 18     } catch (ex) {
 19         alert('设置select错误:指定的JSON对象不符合Select对象的解析要求!');
 20     }
 21 };
 22 /**
 23  * 创建一个options并返回
 24  */
 25 Select.createOption = function(/*string*/value, /*string*/text) {
 26     var opt = document.createElement('option');
 27     opt.setAttribute('value', value);
 28     opt.innerHTML = text;
 29     return opt;
 30 };
 31 /**
 32  * 给指定的select添加一个option,并返回当前option对象
 33  */
 34 Select.addOption = function(/*string*/selectId, /*string*/value, /*string*/text) {
 35     var opt = Select.createOption(value, text);
 36     $(selectId).appendChild(opt);
 37     return opt;
 38 };
 39 /**
 40  * 获取指定select的当前被选中的options对象,如果为多选且有多个被选中则返回数组.
 41  */
 42 Select.getSelected = function(/*string*/selectId) {
 43     var slt = $(selectId);
 44     if (!slt) return null;
 45     if (slt.type.toLowerCase() == "select-multiple") {
 46         var len = Select.len(selectId);
 47         var result = [];
 48         for (var i = 0; i < len; i ++) {
 49             if (slt.options[i].selected) result.push(slt.options[i]);
 50         }
 51         return result.length > 1 ? result : (result.length == 0 ? null : result[0]);
 52     } else {
 53         var index = $(selectId).selectedIndex;
 54         return $(selectId).options[index];
 55     }
 56 };
 57 /**
 58  * 使指定索引位置的option被选中.从0开始.
 59  */
 60 Select.select = function(/*string*/selectId, /*int*/index) {
 61     var slt = $(selectId);
 62     if (!slt) return false;
 63     for (var i = 0; i < slt.options.length; i ++) {
 64         if (index == i) {
 65             slt.options[i].setAttribute("selected", "selected");
 66             return true;
 67         }
 68     }
 69     return false;
 70 };
 71 /**
 72  * 选中指定的select的所有option选项,如果支持多选的话
 73  */
 74 Select.selectAll = function(/*string*/selectId) {
 75     var len = Select.len(selectId);
 76     for (var i = 0; i < len; i ++) Select.select(selectId, i);
 77 };
 78 /**
 79  * 获取指定select的总的options个数
 80  */
 81 Select.len = function(/*string*/selectId) {
 82     return $(selectId).options.length;
 83 };
 84 /**
 85  * 清除select中满足条件的options,如果没有指定处理方法则清除所有options项
 86  */
 87 Select.clear = function(/*string*/selectId, /*function*/iterator) {
 88     if (typeof(iterator) != 'function') {
 89         $(selectId).length = 0;
 90     } else {
 91         var slt = $(selectId);
 92         for (var i = slt.options.length - 1; i >= 0; i --) {
 93             if (iterator(slt.options[i]) == true) slt.removeChild(slt.options[i]);
 94         }
 95     }
 96 };
 97 /**
 98  * 复制指定的select的option对象到另外一指定的select对象上.如果指定了处理
 99  * 函数,那么只有返回true时才会copy.
100  * 函数iterator参数:当前处理的option对象、目标select的options数组
101  */
102 Select.copy = function(/*string*/srcSlt, /*string*/targetSlt, /*function*/iterator) {
103     var s = $(srcSlt), t = $(targetSlt);
104     for (var i = 0; i < s.options.length; i ++) {
105         if (typeof(iterator) == 'function') {
106             if (iterator(s.options[i], $(targetSlt).options) == true) {
107                 t.appendChild(s.options[i].cloneNode(true));
108             }
109         } else {
110             t.appendChild(s.options[i].cloneNode(true));
111         }
112     }
113 };

 

posted @ 2011-12-27 12:12  Cat.1988  阅读(301)  评论(0编辑  收藏  举报