详解js中class的多种函数封装方法
本文实例讲解了js中class的多种函数封装方法,分享给大家供大家参考,具体内容如下
<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>关于class的多种函数封装</title>
<style>
body{
margin:0;
}
li{
height:20px;
}
</style>
</head>
<body>
<divclass="box"id="box">
<ulclass="list">
<liclass="inabcab"></li>
<liclass="inacb"></li>
<liclass="ina"></li>
<liclass="inacb"></li>
<liclass="inba"></li>
<liclass="abc"></li>
</ul>
</div>
<script>
//数组的indexOf方法封装
functionindexOf(arr,value,start){
//如果不设置start,则默认start为0
if(arguments.length==2){
start=0;
}
//如果数组中存在indexOf方法,则用原生的indexOf方法
if(arr.indexOf){
returnarr.indexOf(value,start);
}
for(vari=0;i<arr.length;i++){
if(arr[i]===value){
returni;
}
}
return-1;
}
//数组去重方法封装
functionnoRepeat(arr){
varresult=[];
for(vari=0;i<arr.length;i++){
if(indexOf(result,arr[i])==-1){
result.push(arr[i]);
}
}
returnresult;
}
//inArray方法封装
functioninArray(arr,value){
for(vari=0;i<arr.length;i++){
if(arr[i]===value){
returntrue;
}
}
returnfalse;
}
//去除首尾空格函数封装
functiontrim(arr){
varresult=arr.replace(/^\s+|\s+$/g,'');
returnresult;
}
//getElementsByClassName函数封装
functiongetElementsByClassName(parentObj,classStr){
varresult=[];
varobjs=parentObj.getElementsByTagName('*');
//如果classStr用空格分隔,则表示class必须同时满足才有效
vartargetArr1=noRepeat(trim(classStr).split(/\s+/));
//如果classStr用逗号分隔,则表示class只要有一个满足就有效
vartargetArr2=noRepeat(trim(classStr).split(/\s*,\s*/));
if(classStr.indexOf(',')==-1){
//用空格分隔或者只有一个class
label:for(vari=0;i<objs.length;i++){
vararr=noRepeat(trim(objs[i].className).split(/\s+/));
for(varj=0;j<targetArr1.length;j++){
if(!inArray(arr,targetArr1[j])){
continuelabel;
}
}
result.push(objs[i]);
}
returnresult;
}else{
//用逗号分隔
label:for(vari=0;i<objs.length;i++){
vararr=noRepeat(trim(objs[i].className).split(/\s+/));
for(varj=0;j<targetArr2.length;j++){
if(inArray(arr,targetArr2[j])){
result.push(objs[i]);
continuelabel;
}
}
}
returnresult;
}
}
//addclass函数封装
functionaddClass(obj,classStr){
vararray=noRepeat(trim(obj.className).split('\s+'));
if(!inArray(array,classStr)){
array.push(classStr);
}
obj.className=array.join('');
returnobj;
}
//removeclass函数封装
functionremoveClass(obj,classStr){
vararray=noRepeat(trim(obj.className).split('\s+'));
varindex=indexOf(array,classStr);
if(index!=-1){
classStr.splice(index,1);
obj.className=classStr.join('');
}
returnobj;
}
//toggleClass函数封装
functiontoggleClass(obj,classStr){
vararray=noRepeat(trim(obj.className).split('\s+'));
if(inArray(array,classStr)){
removeClass(obj,classStr);
}else{
addClass(obj,classStr);
}
}
</script>
</body>
</html>
希望本文所述对大家学习javascript程序设计有所帮助。