- /**
- ? *现应用于http://www.bt285.cn?http://www.5a520.cn?这两个网站j?
- ??*@class?DOM工具类,提供了一些方便的函数页面元素的一些操作
- ??*@constructor
- ??*@return?DomUtils
- */
- function?DomUtils(){
- }
- /**
- ?*从待选列表移动一项到已经选择列表
- ?*@param?{Object}?fbox??-待选项目列表
- ?*@param?{Object}?tbox??-选择了的项目列表
- ?*@param?{string}?fmsg?-提示信息(待选项目列表无数据...)
- ?*@param?{string}?tmsg??-提示信息(请选择数据....)
- ?*@version?1.0?适用范围:IE6.0/opera?8.5/firefox1.5
- ?*
- ?*/
- DomUtils.move=function(fbox,tbox,fmsg,tmsg)??{
- ????var?id?=0;
- ????if(fbox.options.length==0){
- ??????alert(fmsg);
- ??????return?false;
- ????}
- ????for(var?i=0;?i<fbox.options.length;?i++)??{
- ?????if(fbox.options[i].selected)??{
- ?????????id?=?1;
- ????????//?增加项目列表到右侧
- ????????var?no?=?new?Option();
- ????????no.value?=?fbox.options[i].value
- ????????no.text?=?fbox.options[i].text
- ????????tbox.options[tbox.options.length]?=?no;
- ????????//??清空左侧的项目列表
- ????????fbox.options[i].value?=?""
- ????????fbox.options[i].text?=?""
- ?????}
- ???}
- ???if(id==0){
- ???????alert(tmsg);
- ???????return?false;
- ???}
- ???DomUtil.bumpUp(fbox);
- }
- /**
- ?*一般不直接调用该方法,该方法用于
- ?*把列表中value属性为""的option清空,其他相应的移上去。
- ?*@param?{Object}?box??-列表框对象
- ?*@version?1.0?适用范围:IE6.0/opera?8.5/firefox1.5
- ?*
- ?*/
- DomUtils.bumpUp=function(box)??{
- ??for(var?i=0;?i<box.options.length;?i++)??{
- ?????if(box.options[i].value?==?"")??{
- ???????for(var?j=i;?j<box.options.length-1;?j++)??{
- ?????????box.options[j].value?=?box.options[j+1].value;
- ?????????box.options[j].text?=?box.options[j+1].text;
- ???????}
- ???????var?ln?=?i;
- ???????break
- ?????}
- ???}
- ???if(ln?<?box.options.length)??{
- ?????box.options.length?-=?1;
- ?????DomUtil.bumpUp(box);
- ???}
- }
- /**
- ?*全部移动到已选择列表
- ?*@param?{Object}?fbox??-待选项目列表
- ?*@param?{Object}?tbox??-选择了的项目列表
- ?*@param?{string}?msg??-提示信息(待选项目列表无数据...)
- ?*@version?1.0?适用范围:IE6.0/opera?8.5/firefox1.5
- ?*
- ?*/
- DomUtils.moveAll=function(fbox,tbox,msg){
- ????if(fbox.options.length==0){
- ??????alert(msg);
- ??????return?false;
- ????}
- ????for(var?i=0;?i<fbox.options.length;?i++)??{
- ????????//?增加项目列表到右侧
- ????????var?no?=?new?Option();
- ????????no.value?=?fbox.options[i].value
- ????????no.text?=?fbox.options[i].text
- ????????tbox.options[tbox.options.length]?=?no;
- ????????//??清空左侧的项目列表
- ????????fbox.options[i].value?=?""
- ????????fbox.options[i].text?=?""
- ?????}
- ???DomUtil.bumpUp(fbox);
- }
- /**
- ?*子复选框改变父复选框状态,当父复选框对应的子复选框的选中状态改变后父复选框的状态也要跟着变化,在这里我们改变父复选框的background样式。
- 当名为b的复选框的被点击时,名为a的复选框的选中状态将会发生相应变化。如b全选中,则a也呈现选中状态,如b不全选,则b的background呈现#949494颜色,如b全不选,则a呈现未选中状态
- ?*@param{string}?arentCheck:父复选框的引用,
- ?*@param{string}?childCheck:子复选框名
- ?*@param{boolean}?isChild:是否是子复选框主动变化了,true表示是,false表示是父复选框变化
- ?*@type?无
- ?*@returns?无
- ?*@version?1.0??适用范围:IE6.0
- ?*/
- DomUtils.changeCheckbox=function(parentCheckBoxName,childCheckBoxName,isChild){
- ????//子checkbox
- ????var?childCheckboxs=document.getElementByName(childCheckBoxName);
- ????//父checkbox
- ????var?parentCheckBox=document.getElementByName(parentCheckBoxName);
- ????//如果是父checkbox变化,则让子checkbox状态和父保持一致
- ????if(!isChild){
- ????????????for?(var?j=0;j<childCheckboxs.length;j++){
- ????????????if?(?childCheckboxs[j].type?==?"checkbox"){
- ????????????????childCheckboxs[j].checked?=?parentCheckBox[0].checked;
- ????????????}
- ????????}
- ????}
- ????
- ????//所有子复选框长度
- ????var?childNum?=?0;
- ????//所有被选复选框长度
- ????var?checkedNum?=?0;
- ????
- ????for?(var?j=0;j<childCheckboxs.length;j++){
- ????????if?(childCheckboxs[j].type?==?"checkbox"){
- ????????????????childNum++;
- ????????????if(childCheckboxs[j].checked){
- ????????????????checkedNum++;
- ????????????}
- ????????}
- ????}
- ????//一个都没有选中
- ????if(checkedNum?==?0){
- ????????parentCheckBox[0].checked?=?false;
- ????}else?if(childNum?!=?checkedNum){
- ????????parentCheckBox[0].checked?=?false;
- ????}else?if(childNum?==?checkedNum){
- ????????parentCheckBox[0].checked?=?true;
- ????}
- ????return;
- }
- /**
- ?*
- ?*?选择复选框
- ?*@param{string}?checkboxname:复选框名字
- ?*@param{string?or?array}?targetValue:要设定的值或值数组
- ?*@type?无
- ?*@returns?无
- ?*@version?1.0??适用范围:IE6.0
- ?*/
- DomUtils.selectCheckbox=function(checkboxname,targetValue){
- ?var?objs?=?document.getElementByName(checkboxname);
- ??if(objs){
- ????var?array=targetValue;
- ????if(false==(targetValue?instanceof?Array)){//不是数组,,则转换为数组
- ????????array=new?Array();
- ????????array.push(targetValue);
- ????}
- ?
- ?????for(var?i=0;i<objs.length;i++){
- ????????var?obj=objs[i];
- ???????if(existInArray(obj.value)){
- ??????????obj.checked=true;
- ???????}
- ?????}
- ??}else{
- ????alert('no?checkbox?named?['+checkboxname+']');
- ????return?false;
- ??}
- ??return?true;
- }
- DomUtils.existInArray=function(array,value){
- ?for(var?i=0;i<array.length;i++){
- ???if(array[i]==value){
- ??????return?true;
- ???}
- ?}
- ?return?false;
- }
- /**
- ?*
- ?*?选择单选
- ?*@param{string}?radioname:单选名字
- ?*@param{string?}?targetValue:要设定的值
- ?*@type?无
- ?*@returns?无
- ?*@version?1.0??适用范围:IE6.0
- ?*/
- DomUtils.selectRadio=function(radioname,targetValue){
- ?var?objs?=?document.getElementByName(radioname);
- ??if(objs){
- ?????for(var?i=0;i<objs.length;i++){
- ????????var?obj=objs[i];
- ???????if(obj.value==targetValue){//找到了
- ??????????obj.checked=true;
- ??????????break;
- ???????}
- ?????}
- ??}else{
- ????alert('no?radio?named?['+radioname+']');
- ????return?false;
- ??}
- ??return?true;
- }
- /**
- *
- *?选择下拉框中的指定值的元素
- ?*?eg:?DomUtils.selectOption('ids',1)
- */
- DomUtils.selectOption=function(objId,?targetValue){
- ??var?obj?=?document.getElementById(objId);
- ??if(obj){
- ????var?options?=?obj.options;
- ????if(options){
- ??????var?len?=?options.length;
- ??????for(var?i=0;i<len;i++){
- ????????if(options[i].value?==?targetValue){
- ??????????options[i].defaultSelected?=?true;
- ??????????options[i].selected?=?true;
- ??????????return?true;
- ????????}
- ??????}
- ????}?else?{
- ??????alert('missing?element(s)!');
- ????}
- ??}?else?{
- ????alert('missing?element(s)!');
- ??}
- }
这几个方法用处在哪里呢?我分别举例说明一下:
??? 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代码就搞定了。岂不是很简单!呵呵,欢迎扔砖头!