FORWORD
开发的时候应该知道,有很多常见的实例操作。比如数组去重,关键词高亮,打乱数组等。这些操作,代码一般不会很多,实现的逻辑也不会很难,因此把一些常见的操作封装成函数,调用的时候,直接调用就好! 作者:守候i 链接:https://juejin.im/post/5a2a7a5051882535cd4abfce 来源:掘金

nach oben


Delete Space in String
//去除空格 type 1-所有空格 2-前后空格 3-前空格 4-后空格 //ecDo.trim(' 1235asd',1) //result:1235asd //这个方法有原生的方案代替,但是考虑到有时候开发PC站需要兼容IE8,所以就还是继续保留

ES 5

trim:function(str,type){ switch(type){ case 1: return str.replace(/\s+/g,""); case 2: return str.replace(/(^\s*)|(\s*$)/g,""); case 3: return str.replace(/(^\s*)/g,""); case 4: return str.replace(); default: return str; } },

nach oben


字母大小写切换
//字母大小写切换 /*type 1:首字母大写 2:首页母小写 3:大小写转换 4:全部大写 5:全部小写 * */ //changeCase('asdasd',1) //result:Asdasd

ES 5

changeCase:function(str.type){ function ToggleCase(str){ var itemText=""; str.split("").forEach( function(item){ if(/^([a-z]+)/.test(item)){ itemText += item.toUpperCase(); }else if(/^([A-Z]+)/.test(item)){ itemText += item.toLowerCase(); }else{ itemText += item; } } ); return itemText; } switch(type){ case 1: return str.replace(/\w+/g,function(word){ return word.substring(0,1).toUpperCase()+word.substring(1).toLowerCase(); }); case 2: return str.replace(/\w+/g,function(word){ return word.substring(0,1).toLowerCase()+word.substring(1).toUpperCase(); }); case 3: return ToggleCase(str); case 4: return str.toUpperCase(); case 5: return str.toLowerCase(); default: return str; } },

nach oben


字符串循环复制
//字符串循环复制 //repeatStr(str->字符串, count->次数) //repeatStr('123',3) //"result:123123123"

ES 5

repeatStr:function(str,count){ var text=""; for(var i=0; i <= count; i++){ text += str; } return text; }

ES 6

repeatStr:function(str,count){ return str.repeat(count); }

nach oben


字符串替换
//replaceAll('这里是上海,中国第三大城市,广东省省会,简称穗,','上海','广州') //result:"这里是广州,中国第三大城市,广东省省会,简称穗,"

ES 5

replaceAll : function(str,AFindText,ArepText){ raRegExp = new RegExp(AFindText,'g');//这里用“i”,就只换第一个 return str.replace(raRegExp,ArepText); }

nach oben


字符替换
//replaceStr(字符串,字符格式, 替换方式,替换的字符(默认*)) // //replaceStr('18819322663',[3,5,3],0) //result:188*****663 //replaceStr('asdasdasdaa',[3,5,3],1) //result:***asdas*** //replaceStr('1asd88465asdwqe3',[5],0) //result:*****8465asdwqe3 //replaceStr('1asd88465asdwqe3',[5],1,'+') //result:"1asd88465as+++++"

ES 5

replaceStr:function(str,regArr,type,ARepText){ var regtext='', Reg=null, replaceText = ARepText || '*'; if(regArr.length === 3 && type === 0){ regtext = `(\\w{' +regArr[0]+ '})\\w{` +regArr[1]+ `}(\\w{` +regArr[2]+ `})`; Reg = new RegExp(regtext); var replaceCount = this.repeatStr(replaceText,regArr[1]); //这里只是为了显示出现ARepText || '*'重复的次数 return str.replace(Reg,'$1' + replaceCount + '$2'); } else if(regArr.length === 3 && type ===1){ regtext = `\\w{` + regArr[0] + `}(\\w{` +regArr[1] + `})\\w{` +regArr[2]+ `}`; Reg = new RegExp (regtext); var replaceCount1 = this.repeatStr(replaceText,regArr[0]); var replaceCount2 = this.repeatStr(replaceText,regArr[2]); return str.replace(Reg,replaceCount1 +'$1' +replaceCount2); } else if (regArr.length === 1 && type === 0){ regtext = `(^\\w{` +regArr[0]+ `})`; Reg = new RegExp(regtext); var replaceCount = this.repeatStr(replaceText,regArr[0]); return str.replace(Reg,replaceCount); } else if (regArr.length === 1 && type === 1){ regtext = `(\\w{` +regArr[0]+ `}$)`; Reg = new RegExp(regtext); var replaceCount = this.repeatStr(replaceText, regArr[0]); return str.replace(Reg,replaceCount); } } //这里的 $1, $2 是 replace方法里的自带属性,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

nach oben


检测字符串
//checkType('165226226326','phone') //result:false // email / 24 hour / cndate / dedate / cnphone / dephone / tel / number / english / text / chinese / lower / upper / 16 colors

ES 5

checkType: function(str, type){ switch(type){ case 'email': return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); case '24hour': return /^([01][0-9]|[2][0-3]):([0-5][0-9])$/.test(str); case 'cndate': return /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(str); case 'dedate': return /^((0[1-9]|[12][0-9]|3[01])-0[1-9]|1[0-2])-([0-9]{4})$/.test(str); case 'cnphone': return /^1[3|4|5|7|8][0-9]{9}$/.test(str); case 'dephone': return /^1[6|7][0-9]{7}$/.test(str); case 'tel': return /^(0\d{2,3}-d{7,8})(-\d{1,4}?)$/.test(str); case 'number': return /^[0-9]+$/.test(str); case 'english': return /^[a-zA-Z]+$/.test(str); case 'test': return /^\w+$/.test(str); case 'chinese': return /^[\u4E00-\u9FA5]+$/.test(str); case 'lower': return /^[a-z]+$/.test(str); case 'upper': return /^[A-Z]+$/.test(str); case '16color': return /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/.test(str); default: return true; } }

nach oben


检测密码强度
//checkPwd('12asdASAD') //result:3(强度等级为3)

ES 5

checkPwd:function(str){ var nowLv = 0; if(str.length < 6){ return nowLv; } if(/[0-9]+/.test(str)){ nowLv ++; } if(/[a-z]+/.test(str)){ nowLv ++; } if(/[A-Z]/.test(str)){ nowLv ++; } if(/\.|-|_/.test(str)){ nowLv ++; } return nowLv; }

nach oben


随机码(toString详解)
// count取值范围0 - 36,主要是根据toString(count),不同的进制来转换成不同的结果 //randomWord(10) //result:"2584316588472575" //randomWord(14) //result:"9b405070dd00122640c192caab84537" //randomWord(36) //result:"83vhdx10rmjkyb9"

ES 5

randomWord : function(count){ return Math.random().toString(count).substring(2); }

nach oben


查找字符串出现的次数
//可能标题会有点误导,下面我就简单说明一个需求,在字符串'sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'中找出'blog'的出现次数。代码如下 //var strTest='sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967' //countStr(strTest,'blog') //result:6

ES 5

countStr:function(str,strSplit){ return str.split(strSplit).length-1; }

nach oben


过滤字符串
//过滤字符串(html标签,表情,特殊字符) //字符串,替换内容(special-特殊字符,html-html标签,emjoy-emjoy表情,word-小写字母,WORD-大写字母,number-数字,chinese-中文),要替换成什么,默认'',保留哪些特殊字符 //如果需要过滤多种字符,type参数使用,分割,如下栗子 //过滤字符串的html标签,大写字母,中文,特殊字符,全部替换成*,但是特殊字符'%','?',除了这两个,其他特殊字符全部清除 //var str='asd 654a大蠢sasdasdASDQWEXZC6d5#%^*^&*^%^&*$\\"\'#@!()*/-())_\'":"{}? < div > < /div > < img src="" / > 啊实打实大蠢猪自行车这些课程'; // filterStr(str,'html,WORD,chinese,special','*','%?') //result:"asd 654a**sasdasd*********6d5#%^*^&*^%^&*$\"'#@!()*/-())_'":"{}?*****************"

ES 5

filterStr:function(str,type,restr,spstr){ var typeArr = type.split(','), _str=str; //The split() method splits a String object into an array of strings by separating the string into substrings, using a specified separator string to determine where to make each split. for(var i=0,len=typeArr.length; i < len;i++){ //是否是过滤特殊符号 if(typeArr[i]==='special'){ var pattern, regText = '$()[]{}?\|^*+./\"\'+'; //是否有哪些特殊符号需要保留 if(spstr){ var _spstr = spstr.split(""), _regText="[^0-9A-Za-z\\s]"; // 其实这里直接定义"[^0-9A-Za-z\\s"后面就不需要去除最后的"]" console.log('01---' + _regText); for (var j = 0; j < _spstr.length; j++){ //如果regText = '$()[]{}?\|^*+./\"\'+';中不含有_spstr[j] if(regText.indexOf(_spstr[j])===-1){ console.log('02---' + _regText); //下面这一步使用string的replace方法把_regText="[^0-9A-Za-z\\s]"最后的“]”给除去 _regText = _regText.replace(/]/,''); _regText += _spstr[j]; console.log('0---' + _spstr[j]) console.log('03---' + _regText); } else{ _regText = _regText.replace(/]/, ''); _regText +='\\'+_spstr[j]; console.log('04---' + _regText); } } _regText += ']'; console.log('05---' + _regText); pattern = new RegExp(_regText, 'g'); } else { pattern = new RegExp("[^0-9A-Za-z\\s]", 'g') //[^0-9A-Za-z\s]意思就是不是数字和大小写字母的元素 } } var _restr = restr || ''; switch (typeArr[i]) { case 'special': _str = _str.replace(pattern, _restr); break; case 'html': _str = _str.replace(/<\/?[^>]*>/g, _restr); break; case 'emjoy': _str = _str.replace(/[^\u4e00-\u9fa5|\u0000-\u00ff|\u3002|\uFF1F|\uFF01|\uff0c|\u3001|\uff1b|\uff1a|\u3008-\u300f|\u2018|\u2019|\u201c|\u201d|\uff08|\uff09|\u2014|\u2026|\u2013|\uff0e]/g, _restr); break; case 'word': _str = _str.replace(/[a-z]/g, _restr); break; case 'WORD': _str = _str.replace(/[A-Z]/g, _restr); break; case 'number': _str = _str.replace(/[0-9]/g, _restr); break; case 'chinese': _str = _str.replace(/[\u4E00-\u9FA5]/g, _restr); break; } } return _str; },

nach oben


格式化处理字符串
//formatText('1234asda567asd890') //result:"12,34a,sda,567,asd,890" //formatText('1234asda567asd890',4,' ') //result:"1 234a sda5 67as d890" //formatText('1234asda567asd890',4,'-') //result:"1-234a-sda5-67as-d890"

ES 5

formatText:function(str,size,delimiter){ var _size = size || 3, _delimiter = delimiter || ','; var regText = '\\B(?=(\\w{' + _size + '})+(?!\\w))'; //这里不用 \\B应该也是可以的 var reg = new RegExp(regText,'g'); return str.replace(reg,_delimiter); }, // (?=l),表示 "l" 字符前面的位置,例如: // var result = "hello".replace(/(?=l)/g, '#'); // console.log(result); // // => "he#l#lo" // (?!p) 就是 (?=p) 的反面意思,比如: // var result = "hello".replace(/(?!l)/g, '#'); // console.log(result); // // => "#h#ell#o#

nach oben


找出最长单词
返回的是最长单词的字母数量 //longestWord('Find the Longest word in a String') //result:7 //longestWord('Find|the|Longest|word|in|a|String','|') //result:7

ES 5

longestWord:function(str,splitType){ var _splitType = splitType || /\s+/g, _max = 0, _item =''; var strArr = str.split(_splitType); strArr.forEach(function(item){ if(_max < item.length){ _max = item.length; _item = item; } }) return {word:_item,length:_max}; }

nach oben


句中单词首字母大写
//titleCaseUp('this is a title') //"This Is A Title"

ES 5

titleCaseUp:function(str,splitType){ var _splitType = splitType || /\s+/g; var strArr = str.split(_splitType), result = "", _this = this; strArr.forEach(function(item){ result += _this.changeCase(item,1)+' '; }) return this.trim(result,4); //trim 4, 是去掉后空格 }

nach oben


字符串变成数组数字
//stringToArray('123') // result: [1,2,3]

ES 5

stringToArray:function(str){ var arr = str.split(','); return JSON.parse('['+ String(arr) +']'); }

nach oben


数字千位分隔符
//‘1234567’ -> '1,234,567' // //注意这里仍旧是字符串 // // 弄出最后一个逗号 (?=\d{3}$) // 弄出所有逗号 (?=(\d{3})+$) //var result = "12345678".replace(/(?=(\d{3})+$)/g, ',') // => "12,345,678" 但是这时候会出现问题,如果数字位数为3的倍数,那么所有的数字前会有一个逗号 // 如: ",123,165,546"

ES 5

stringThousand:function(str){ var regex = /(?!^)(?=(\d{3})+$)/g; return str.replace(regex,','); } //(?=l),表示 "l" 字符前面的位置 // var result = "hello".replace(/(?=l)/g, '#'); // console.log(result); "he#l#lo" //(?!p) 就是 (?=p) 的反面意思 //var result = "hello".replace(/(?!l)/g, '#'); // console.log(result); "#h#ell#o#"

nach oben


多个数字千位分隔
//"12345678 123456789" //"12,345,678 123,456,789"

ES 5

multiStringThousand:function(str){ var regex = /(?!\b)(?=(\d{3})+\b)/g; return str.replace(regex,','); } //(?!\b) 要求当前是一个位置,但不是 \b 前面的位置,其实就是 \B

nach oben


货币格式化
//currencyFormat(1888,'$') -> '$ 1,888.00' //currencyFormat(18880,'¥') -> '¥ 1,8880.00'

ES 5

currencyFormat:function(num,cur){ if (cur === '$' || cur === '€'){ return num.toFixed(2).replace(/\B(?=(\d{3})+\b)/g, ",").replace(/^/,cur+' '); } else if(cur === '¥'){ return num.toFixed(2).replace(/\B(?=(\d{4})+\b)/g, ",").replace(/^/, cur + ' '); } else { return 'Please input the correct currency unit!' } }

nach oben


数组去重

ES 5

removeRepeatArray:function(arr){ return arr.filter(function(item,index,self){ console.log(self);//传入的数组 console.log(item); // 数组中的每一个元素 console.log(index); // 每个元素的位置 return self.indexOf(item) === index; }) } //The filter() method creates a new array with all elements that pass the test implemented by the provided function.

ES 6

removeRepeatArray:function(arr){ return [...new Set(arr)]; }

nach oben


数组顺序打乱

ES 5

upsetArr:function(arr){ return arr.sort(function(){ return Math.random()-0.1; }); } //The sort() method sorts the elements of an array in place and returns the sorted array. The default sort order is built upon converting the elements into strings, then comparing their sequences of UTF-16 code units values.

nach oben


数组降/升序排列

降序 downArr

downArr:function(arr){ return arr.sort(function(n1,n2){ if(n1>=n2){return n2-n1;} }) }

升序 upArr

upArr:function(arr){ return arr.sort(function(n1,n2){ if(n1<=n2){return n1-n2;} }) }

nach oben


数组最大值最小值
maxArr: function(arr){ return Math.max.apply(null,arr); }
minArr: function(arr){ return Math.min.apply(null,arr); }

nach oben


数组求和,平均值
//求和 sumArr:function(arr){ return arr.reduce(function(pre,cur){ return pre+cur; }) },
//数组平均值,小数点可能会有很多位,这里不做处理,处理了使用就不灵活! covArr: function (arr) { return this.sumArr(arr) / arr.length; },

nach oben


从数组中随机获取元素

ES 5

randomOne : function(arr){ return arr[Math.floor(Math.random()*arr.length)]; }

nach oben


返回数组(字符串)一个元素出现的次数
//getEleCount('asd56+asdasdwqe','a') //result:3 //getEleCount([1,2,3,4,5,66,77,22,55,22],22) //result:2

ES 5

getEleCount: function(obj,ele){ var num = 0; for(var i=0;i < obj.length;i++){ if(ele === obj[i]){ num ++; } } return num; }

nach oben


返回数组(字符串)出现最多的几次元素和出现次数 ###
//arr, rank->长度,默认为数组长度,ranktype,排序方式,默认降序 //返回值:el->元素,count->次数 //getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2]) //默认情况,返回所有元素出现的次数 //result:[{"el":"2","count":6},{"el":"1","count":4},{"el":"3","count":2},{"el":"4","count":1},{"el":"5","count":1},{"el":"6","count":1}] //getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3) //传参(rank=3),只返回出现次数排序前三的 //result:[{"el":"2","count":6},{"el":"1","count":4},{"el":"3","count":2}] //getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],null,1) //传参(ranktype=1,rank=null),升序返回所有元素出现次数 //result:[{"el":"6","count":1},{"el":"5","count":1},{"el":"4","count":1},{"el":"3","count":2},{"el":"1","count":4},{"el":"2","count":6}] //getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3,1) //传参(rank=3,ranktype=1),只返回出现次数排序(升序)前三的 //result:[{"el":"6","count":1},{"el":"5","count":1},{"el":"4","count":1}]

ES 5

getCount: function(arr,rank,ranktype){ var obj={}, k,arr1 =[]; //记录每一元素出现的次数 for(var i=0;i < arr.length;i++){ k = arr[i]; //注意这里的 obj 是一个对象,所以表达方式是 obj={"a":n1,"b":n2,...} //所以这里obj[k]的值是obj 对象中的“k”所对应的值 if(obj[k]){ obj[k]++; }else{ obj[k] = 1; } } //上面这一步做完,就能够把所有的元素都添加到obj对象里,并且每个元素的总个数和元素本身都一一对应上了。 //保存结果{el-'元素',count-出现次数} for(var o in obj){ arr1.push({el:o,count:obj[o]}); } //排序(降序) arr1.sort(function(n1,n2){ return n2.count - n1.count; }); //如果ranktype为1,则为升序,反转数组 if(ranktype === 1){ arr1 = arr1.revers(); } var rank1 = rank || arr1.length; //slice 是截取括号里开头结尾的数组元素,并组成一个新的数组 return arr1.slice(0,rank1); }

nach oben


得到n1-n2下标的数组
//就是 是用 slice 的功能 //getArrayNum([0,1,2,3,4,5,6,7,8,9],5,9) //result:[5, 6, 7, 8, 9] //getArrayNum([0,1,2,3,4,5,6,7,8,9],2) //不传第二个参数,默认返回从n1到数组结束的元素 //result:[2, 3, 4, 5, 6, 7, 8, 9]

ES 5

getArrayNum:function(arr,n1,n2){ return arr.slice(n1,n2); }

nach oben


筛选数组
//删除值为'val'的数组元素 //removeArrayForValue(['test','test1','test2','test','aaa'],'test',1) //result:["aaa"] 带有'test'的都删除 //removeArrayForValue(['test','test1','test2','test','aaa'],'test') //result:["test1", "test2", "aaa"] //数组元素的值全等于'test'才被删除

ES 5

removeArrayForValue:function(arr,val,type){ return arr.filter(function(item){ console.log(item);//传入数组的每一个元素 return type?item.indexOf(val)===-1:item!=val; }) } //这里的type只要为true,就可以进行模糊筛选

nach oben


获取对象数组某些项
//var arr=[{a:1,b:2,c:9},{a:2,b:3,c:5},{a:5,b:9},{a:4,b:2,c:5},{a:4,b:5,c:7}] //getOptionArray(arr,'a,c') //result:[{a:1,c:9},{a:2,c:5},{a:5,c:underfind},{a:4,c:5},{a:4,c:7}] //getOptionArray(arr,'b') //result:[2, 3, 9, 2, 5]

ES 5

getOptionArray:function(arr,keys){ var newArr=[]; if(!keys){ return arr; } var _keys=keys.split(","); var newArrOne ={}; //是否只是需要获取某一项的值 if(_keys.length === 1){ for(var i=0;i < arr.length;i++){ newArr.push(arr[i][keys]); } return newArr; } for(var i=0;i < arr.length;i++){ newArrOne={}; for(var j=0;j < keys.length;j++){ newArrOne[_keys[j]]=arr[i][_keys[j]]; } newArr.push(newArrOne); } return newArr; }

nach oben


排除对象数组某些项
//var arr=[{a:1,b:2,c:9},{a:2,b:3,c:5},{a:5,b:9},{a:4,b:2,c:5},{a:4,b:5,c:7}] //filterOptionArray(arr,'a') //result:[{b:2,c:9},{b:3,c:5},{b:9},{b:2,c:5},{b:5,c:7}] //filterOptionArray(arr,'a,c') //result:[{b:2},{b:3},{b:9},{b:2},{b:5}]

ES 5

filterOptionArray:function(arr,keys){ var newArr=[]; var _keys=keys.split(","); var newArrOne={}; for(var i=0;i < arr.length; i++){ newArrOne={}; for(var key in arr[i]){ //如果key不存在排除keys里面,添加数据 if(_keys.indexOf(key)===-1){ newArrOne[key] = arr[i][key]; } } newArr.push(newArrOne); } return newArr; }

nach oben


对象数组排序
//var arr=[{a:1,b:2,c:9},{a:2,b:3,c:5},{a:5,b:9},{a:4,b:2,c:5},{a:4,b:5,c:7}] //arraySort(arr,'a,b')a是第一排序条件,b是第二排序条件 //result:[{"a":1,"b":2,"c":9},{"a":2,"b":3,"c":5},{"a":4,"b":2,"c":5},{"a":4,"b":5,"c":7},{"a":5,"b":9}]

Es 5

arraySort:function(arr,sortText){ if(!sortText){ return arr; } var _sortText = sortText.split(",").reverse(); var _arr = arr.slice(0); for(var i=0;i< _sortText.length; i++){ _arr.sort(function(n1,n2){ //这里同样也是对象,所以可以通过n1[]来调用元素 return n1[_sortText[i]]-n2[_sortText[i]]; }) } return _arr; }

nach oben


数组扁平化
// steamroller([1,2, [4,5, [1,23]]]) //[1, 2, 4, 5, 1, 23]

ES 5

steamroller:function(arr){ var newArr=[]; var _this = this; for(var i=0;i < arr.length;i++){ if(Array.isArray(arr[i])){ // 如果是数组,调用(递归)steamroller 将其扁平化 // 然后再 push 到 newArr 中 newArr.push.apply(newArr,_this.stramroller(arr[i])); }else{ // 不是数组直接 push 到 newArr 中 newArr.push(arr[i]); } } return newArr; } //push is intentionally generic. This method can be used with call() or apply() on objects resembling arrays.

nach oben


检测对象是否有哪个类名
//e.g. //< img id="b0" class="imgb2" > // < img id = "b1" class="imgb2" > // < img id="b2" class="imgb2 haha oo"> //jsFuncEs5.hasClass(document.getElementById("b1"),'imgb2'); //true //document.getElementById('b1').className; // "imgb2" //jsFuncEs5.trim(document.getElementById('b2').className,1);// "imgb2hahaoo"

ES 5

hasClass:function(obj,class){ if(obj.className && this.trim(obj.className,1)!===""){ //trim 1 是去掉所有空格 var arr = obj.className.split(/\s+/); //这个正则表达式是因为class可以有多个,判断是否包含 //也可以imgb2.className.split(" ");通过空格来分割 return (arr.indexOf(classStr) === -1)?false:true; }else{ return false; } }

ES 6

hasClass: function(obj,classStr){ return (" "+obj.className + " ").indexOf(" "+classStr+" ")> -1; } 等价于 hasClass:function(obj,classStr){ return obj.className.indexOf(classStr) > -1; },

nach oben


添加类名

ES 5

addClass:function(obj,classStr){ if(obj.length>=1){ for(var i=0; i < obj.length;i++){ if(!this.hasClass(obj[i],classStr)){ obj[i].className += " " + classStr; } } } else{ if(!this.hasClass(obj,classStr)){ obj.className += " " + classStr; } } }, //if的条件是一个数组,else是单个的getElementById //这里删除了源文件的(this.istype(obj,'array') || this.istype(obj,'element')) &&在 if的条件里面

nach oben


删除类名

ES 5

removeClass:function (obj,classStr){ if(obj.length > 1){ for(var i=0; i< obj.length; i++){ if(this.hasClass(obj[i],classStr)){ var reg = new RegExp('(\\s|^)'+classStr+'(\\s|$)'); obj[i].className = obj[i].className.replace(reg,''); } } } else{ if(this.hasClass(obj,classStr)){ var reg = new RegExp('(\\s|^)'+classStr+'(\\s|$)'); obj.className = obj.className.replace(reg,''); } } }

nach oben


替换类名("被替换的类名","替换的类名")

ES 5

replaceClass:function(obj,newName,oldName){ this.removeClass(obj,oldName); this.addClass(obj,newName); }

nach oben


获取兄弟节点
//siblings(obj,'#id') // The Node.previousSibling read- only property returns the node immediately preceding the specified one in its parent's childNodes list, or null if the specified node is the first in that list. //node.type === 1 , An Element node like < p > or < div >.

ES 5

siblings:function(obj,opt){ var a = [];//定义一个数组,用来存o的兄弟元素 var p = obj.previousSibling; while (p){//先取o的哥哥们 判断有没有上一个哥哥元素,如果有则往下执行 p表示previousSibling if(p.nodeType === 1){ a.push(p); } p = p.previousSibling;//最后把上一个节点赋给p } a.reverse();//把顺序反转一下 这样元素的顺序就是按先后的了 var n = obj.nextSibling; //再取o的弟弟 while(n){//判断有没有下一个弟弟结点 n是nextSibling的意思 if(n.nodeType === 1){ a.push(n); } n = n.nextSibling; } if(opt){ var _opt = opt.substr(1); var b = [ ];//定义一个数组,用于储存过滤a的数组 if(opt[0] === ''){ b = a.filter(function(item){ return item.className === _opt }); } else if (opt[0] === '#') { b = a.filter(function (item) { return item.id === _opt }); } else { b = a.filter(function (item) { return item.tagName.toLowerCase() === opt }); } return b; } return a; }

nach oben


设置样式

ES 5

css:function(obj,json){ for(var attr in json){ obj.style[attr] = json[attr]; } }

nach oben


设置文本内容

ES 5

html:function(obj){ if(arguments.length === 1){ return obj.innerHTML; }else if(arguments.length === 2){ obj.innerHTML = arguments[1]; } }, text:function(obj){ if (arguments.length === 1) { return obj.innerHTML; } else if (arguments.length === 2) { obj.innerHTML = this.filterStr(arguments[1], 'html'); } }

nach oben


显示隐藏

ES 5

show:function(obj){ var blockArr=['div', 'li', 'ul', 'ol', 'dl', 'table', 'article', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'hr', 'header', 'footer','details', 'summary', 'section', 'aside', ' ' ]; if(blockArr.indexOf(obj.tagName.toLocaleLowerCase()) === -1){ obj.style.display = 'inline'; } else { obj.style.display = 'block'; } }, hide:function(obj){ obj.style.display='none'; }

nach oben


句中单词首字母大写

nach oben


句中单词首字母大写

nach oben


获取兄弟节点

nach oben


句中单词首字母大写

nach oben


句中单词首字母大写

nach oben


获取兄弟节点

nach oben


句中单词首字母大写

nach oben


句中单词首字母大写

nach oben


获取兄弟节点

nach oben


句中单词首字母大写

nach oben


句中单词首字母大写

nach oben