liwei-blog/javascripts/class-module.js

64 lines
1.9 KiB
JavaScript

// Add class to element => https://www.sitepoint.com/add-remove-css-class-vanilla-js/
export function addNewClass(elements, myClass) {
// if there are no elements, we're done
if (!elements) {
return
}
// if we have a selector, get the chosen elements
if (typeof elements === 'string') {
elements = document.querySelectorAll(elements)
}
// if we have a single DOM element, make it an array to simplify behavior
else if (elements.tagName) {
elements = [elements]
}
// add class to all chosen elements
for (var i = 0; i < elements.length; i++) {
// if class is not already found
if (
(' ' + elements[i].className + ' ').indexOf(' ' + myClass + ' ') < 0
) {
// add class
elements[i].className += ' ' + myClass
}
}
}
// Remove class from element => https://www.sitepoint.com/add-remove-css-class-vanilla-js/
export function removeClass(elements, myClass) {
// if there are no elements, we're done
if (!elements) {
return
}
// if we have a selector, get the chosen elements
if (typeof elements === 'string') {
elements = document.querySelectorAll(elements)
}
// if we have a single DOM element, make it an array to simplify behavior
else if (elements.tagName) {
elements = [elements]
}
// create pattern to find class name
var reg = new RegExp('(^| )' + myClass + '($| )', 'g')
// remove class from all chosen elements
for (var i = 0; i < elements.length; i++) {
elements[i].className = elements[i].className.replace(reg, ' ')
}
}
// 函数节流
export function throttle(fn, scope) {
let timer
return function () {
const context = scope || this
const args = arguments
if (!timer) {
timer = setTimeout(function () {
fn.apply(context, args)
timer = null
}, 80)
}
}
}