


Detailed explanation of various function encapsulation methods of classes in js_javascript skills
The examples in this article explain the various function encapsulation methods of classes in js and share them with you for your reference. The specific content is as follows
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>关于class的多种函数封装</title> <style> body{ margin: 0; } li{ height: 20px; } </style> </head> <body> <div class="box" id="box"> <ul class="list"> <li class="in abc ab "></li> <li class="in ac b "></li> <li class="in a "></li> <li class="in acb "></li> <li class="in ba "></li> <li class="abc"></li> </ul> </div> <script> //数组的indexOf方法封装 function indexOf(arr,value,start){ //如果不设置start,则默认start为0 if(arguments.length == 2){ start = 0; } //如果数组中存在indexOf方法,则用原生的indexOf方法 if(arr.indexOf){ return arr.indexOf(value,start); } for( var i = 0; i < arr.length; i++){ if(arr[i] === value){ return i; } } return -1; } //数组去重方法封装 function noRepeat(arr){ var result = []; for( var i = 0; i < arr.length; i++){ if(indexOf(result,arr[i]) == -1){ result.push(arr[i]); } } return result; } //inArray方法封装 function inArray(arr,value){ for(var i = 0; i < arr.length; i++){ if(arr[i] === value){ return true; } } return false; } //去除首尾空格函数封装 function trim(arr){ var result = arr.replace(/^\s+|\s+$/g,''); return result; } //getElementsByClassName函数封装 function getElementsByClassName(parentObj,classStr){ var result = []; var objs = parentObj.getElementsByTagName('*'); //如果classStr用空格分隔,则表示class必须同时满足才有效 var targetArr1 = noRepeat(trim(classStr).split(/\s+/)); //如果classStr用逗号分隔,则表示class只要有一个满足就有效 var targetArr2 = noRepeat(trim(classStr).split(/\s*,\s*/)); if(classStr.indexOf(',') == -1 ){ //用空格分隔或者只有一个class label: for(var i = 0; i < objs.length; i++){ var arr = noRepeat(trim(objs[i].className).split(/\s+/)); for( var j = 0; j < targetArr1.length; j++){ if(!inArray(arr,targetArr1[j])){ continue label; } } result.push(objs[i]); } return result; }else{ //用逗号分隔 label: for(var i = 0; i < objs.length; i++){ var arr = noRepeat(trim(objs[i].className).split(/\s+/)); for( var j = 0; j < targetArr2.length; j++){ if(inArray(arr,targetArr2[j])){ result.push(objs[i]); continue label; } } } return result; } } //addclass函数封装 function addClass(obj,classStr){ var array = noRepeat(trim(obj.className).split('\s+')); if(!inArray(array,classStr)){ array.push(classStr); } obj.className = array.join(' '); return obj; } //removeclass函数封装 function removeClass(obj,classStr){ var array = noRepeat(trim(obj.className).split('\s+')); var index = indexOf(array,classStr); if(index != -1){ classStr.splice(index,1); obj.className = classStr.join(' '); } return obj; } //toggleClass函数封装 function toggleClass(obj,classStr){ var array = noRepeat(trim(obj.className).split('\s+')); if(inArray(array,classStr)){ removeClass(obj,classStr); }else{ addClass(obj,classStr); } } </script> </body> </html>
I hope this article will be helpful to everyone learning JavaScript programming.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Go language provides two dynamic function creation technologies: closure and reflection. closures allow access to variables within the closure scope, and reflection can create new functions using the FuncOf function. These technologies are useful in customizing HTTP routers, implementing highly customizable systems, and building pluggable components.

In C++ function naming, it is crucial to consider parameter order to improve readability, reduce errors, and facilitate refactoring. Common parameter order conventions include: action-object, object-action, semantic meaning, and standard library compliance. The optimal order depends on the purpose of the function, parameter types, potential confusion, and language conventions.

1. The SUM function is used to sum the numbers in a column or a group of cells, for example: =SUM(A1:J10). 2. The AVERAGE function is used to calculate the average of the numbers in a column or a group of cells, for example: =AVERAGE(A1:A10). 3. COUNT function, used to count the number of numbers or text in a column or a group of cells, for example: =COUNT(A1:A10) 4. IF function, used to make logical judgments based on specified conditions and return the corresponding result.

The advantages of default parameters in C++ functions include simplifying calls, enhancing readability, and avoiding errors. The disadvantages are limited flexibility and naming restrictions. Advantages of variadic parameters include unlimited flexibility and dynamic binding. Disadvantages include greater complexity, implicit type conversions, and difficulty in debugging.

The benefits of functions returning reference types in C++ include: Performance improvements: Passing by reference avoids object copying, thus saving memory and time. Direct modification: The caller can directly modify the returned reference object without reassigning it. Code simplicity: Passing by reference simplifies the code and requires no additional assignment operations.

The key to writing efficient and maintainable Java functions is: keep it simple. Use meaningful naming. Handle special situations. Use appropriate visibility.

The difference between custom PHP functions and predefined functions is: Scope: Custom functions are limited to the scope of their definition, while predefined functions are accessible throughout the script. How to define: Custom functions are defined using the function keyword, while predefined functions are defined by the PHP kernel. Parameter passing: Custom functions receive parameters, while predefined functions may not require parameters. Extensibility: Custom functions can be created as needed, while predefined functions are built-in and cannot be modified.

This website reported on July 9 that the AMD Zen5 architecture "Strix" series processors will have two packaging solutions. The smaller StrixPoint will use the FP8 package, while the StrixHalo will use the FP11 package. Source: videocardz source @Olrak29_ The latest revelation is that StrixHalo’s FP11 package size is 37.5mm*45mm (1687 square millimeters), which is the same as the LGA-1700 package size of Intel’s AlderLake and RaptorLake CPUs. AMD’s latest Phoenix APU uses an FP8 packaging solution with a size of 25*40mm, which means that StrixHalo’s F
