1 Star 1 Fork 0

wangjie/js

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
myself.js 5.67 KB
一键复制 编辑 原始数据 按行查看 历史
wangjie 提交于 2020-04-17 14:40 . add myself.js.
/*
目录:
1、获取对象的属性值函数(行间样式和非行间样式都可以)
2、元素抖动函数
3、元素移动函数
4、获取元素绝对位置函数
5、通过元素的className获取到元素
6、为元素添加class名称
7、为元素移除class名称
8、在一个数组arr中找一个字符串str,找不到返回-1,找到返回所在位置
9、数组去重
10、同一个事件绑定多个不同的函数
11、鼠标拖拽函数
12、cookie封装函数
*/
//1、获取对象的属性值函数(行间样式和非行间样式都可以)
function getStyle(obj, attr) {
return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj)[attr];
}
//2、元素抖动函数
function shake(obj, attr, endFn) { //obj:元素 attr:属性名称 endFn:回调函数
var num = 0;
var arr = [];
if(obj.timer) {
return;
} //修复隐患
obj.timer = true;
clearInterval(obj.timer);
for(i = 20; i > 0; i -= 2) {
arr.push(i, -i);
}
arr.push(0);
var pos = parseInt(getStyle(obj, attr)); //有隐患
obj.timer = setInterval(function() {
obj.style[attr] = pos + arr[num] + 'px';
num++;
if(num === arr.length) {
clearInterval(obj.timer);
endFn && endFn();
obj.timer = false;
}
}, 50);
}
//3、元素移动函数
function doMove(obj, attr, dir, target,fn) { //obj:对象 attr:样式(top,bottom,left,right) dir:步长 target:终点
dir = parseInt(getStyle(obj, attr)) < target ? dir : -dir; //判断方向(dir为正还是为负)
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var speed = parseInt(getStyle(obj, attr)) + dir;
if(dir < 0 && speed < target || dir > 0 && speed > target) {
speed = target;
}
obj.style[attr] = speed + 'px';
if(speed === target) {
clearInterval(obj.timer);
fn&&fn();
}
}, 30);
};
//4、获取元素绝对位置函数
function getPos(obj){
var pos = {left:0, top:0};
while(obj){
pos.left += obj.offsetLeft;
pos.top += obj.offsetTop;
obj = obj.offsetParent;
}
return pos;
}
//5、通过元素的className获取到元素
function getElementsByClassName(parent, tagName, classname) { //parent:父节点 tagName:元素类型 classname:要匹配的className
var aEls = parent.getElementsByTagName(tagName);
var arr = [];
for(var i = 0; i < aEls.length; i++) {
var aClassName = aEls[i].className.split(' ');
for(var j = 0; j < aClassName.length; j++) {
if(aClassName[j] == classname) {
arr.push(aEls[i]);
break;
}
}
}
return arr;
}
//6、为元素添加class名称
function addClass(obj, className) {
if(obj.className == '') {
obj.className = className;
} else {
var arrClassName = obj.className.split(' ');
if(arrIndexOf(arrClassName, className) == -1) { //调用arrIndexOf函数
obj.className += ' ' + className;
}
}
}
//7、为元素移除class名称
function reMoveClass(obj,className){
var arrClassName = obj.className.split(' ');
var _index = arrIndexOf(arrClassName, className);
if(_index != -1){
arrClassName.splice(_index, 1);
obj.className = arrClassName.join(' ');
}
}
//8、在一个数组arr中找一个字符串str,找不到返回-1,找到返回所在位置
function arrIndexOf(arr, str) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] == str) {
return i;
}
}
return -1;
}
//9、数组去重
function arrNorepeat(arr) {
var json = {}; //创建一个对象
var newArr = [];
for(var i = 0; i < arr.length; i++) {
if(!json[arr[i]]) { //创建对象的一个属性(数组的一个元素)
newArr.push(arr[i]);
json[arr[i]] = 1; //标记对象的对应的属性为真
}
}
return newArr;
}
//10、同一个事件可以绑定多个不同的函数(绑定多少个函数就调用多少次bind)
function bindEvent(obj, evname, fn) { //evname:事件,没有on,如onclick写成click
if(obj.addEventListener) { //在标准下,没有on,this:指向obj
obj.addEventListener(evname, fn, false);
} else { //在IE下,有on,this:指向window,所以调用fn.call(obj);
obj.attachEvent('on' + evname, function() {
fn.call(obj);
});
}
}
//11、拖拽函数
function drag(obj){
obj.onmousedown = function(ev){
var ev = ev || event;
var disX = ev.clientX - this.offsetLeft;
var disY = ev.clientY - this.offsetTop;
if(obj.setCapture){ //设置全局捕获(IE下清除事件默认行为)
obj.setCapture();
}
document.onmousemove = function(ev){
var ev = ev || event;
obj.style.left = ev.clientX - disX + 'px';
obj.style.top = ev.clientY - disY + 'px';
}
document.onmouseup = function(){
document.onmousemove = document.onmouseup = null;
if(obj.releaseCapture){ //释放全局捕获
obj.releaseCapture();
}
}
return false; //标准下清除事件默认行为
}
}
/*12、cookie封装函数*******************************************/
//1、在cookie中保存一个数据
function setCookie(key, value, t) { //key:名称 value:内容 t:时间(天)
var oDate = new Date();
var value1 = encodeURI(value);
oDate.setDate( oDate.getDate() + t );
document.cookie = key + '=' + value1 + ';expires=' + oDate.toGMTString();
}
//2、获取cookie中的一个数据
function getCookie(key) {
var arr1 = document.cookie.split('; ');
for (var i=0; i<arr1.length; i++) {
var arr2 = arr1[i].split('=');
if ( arr2[0] == key ) {
return decodeURI(arr2[1]);
}
}
}
//3、删除cookie中的一个数据
function removeCookie(key) {
setCookie(key, '', -1);
}
/*************************************************************/
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/Jugier/js.git
git@gitee.com:Jugier/js.git
Jugier
js
js
master

搜索帮助