欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaScript工具库MyTools详解

程序员文章站 2022-03-08 14:14:51
本文实例为大家分享了javascript工具库mytools,不断填充中,供大家参考,具体内容如下 mytools.js 将功能绑定在window中,调用的时候,直接使用myt...

本文实例为大家分享了javascript工具库mytools,不断填充中,供大家参考,具体内容如下

mytools.js

将功能绑定在window中,调用的时候,直接使用mytoos.xxx就可以进行函数调用。

(function (w) {
 w.mytool = {
  /**
   * 根据id获取元素节点
   * @param {string}id 节点id
   * @returns {any} id为id的节点
   */
  $: function (id) {
   return typeof id === 'string' ? document.getelementbyid(id) : null;
  },

  /**
   * 返回网页被卷去的高、网页被卷去的左
   * @returns {{top: *, left: *}} top:被卷去的高 left:被卷去的左
   */
  scroll: function() {
   if(window.pageyoffset !== null){ // 最新的浏览器
    return {
     "top": window.pageyoffset,
     "left": window.pagexoffset
    }
   }else if(document.compatmode === 'css1compat'){ // w3c
    return {
     "top": document.documentelement.scrolltop,
     "left": document.documentelement.scrollleft
    }
   }
   return {
    "top": document.body.scrolltop,
    "left": document.body.scrollleft
   }
  },

  /**
   * 返回当前界面宽度和高度
   * @returns {{width: *, height: *}} width:当前界面宽度 height:当前界面高度
   */
  client: function() {
   if(window.innerwidth !== null){ // 最新的浏览器
    return {
     "width": window.innerwidth,
     "height": window.innerheight
    }
   }else if(document.compatmode === 'css1compat'){ // w3c
    return {
     "width": document.documentelement.clientwidth,
     "height": document.documentelement.clientheight
    }
   }
   return {
    "width": document.body.clientwidth,
    "height": document.body.clientheight
   }
  },

  /**
   * 检查obj元素是否的类名中是否有cs
   * @param {element}obj
   * @param {string}cs
   * @returns {boolean} true有 false无
   */
  hasclassname: function (obj, cs) {
   var reg = new regexp('\\b' + cs + '\\b');
   return reg.test(obj.classname);
  },

  /**
   * 为obj添加类名cs
   * @param {element}obj
   * @param {string}cs
   */
  addclassname: function (obj, cs) {
   if(!this.hasclassname(obj,cs)){
    obj.classname += ' ' + cs;
   }
  },

  /**
   * 移除所有 obj的cs类:
   * @param {element}obj
   * @param {string}cs
   */
  removeclassname: function (obj, cs) {
   var reg = new regexp('\\b' + cs + '\\b');
   // 删除class
   obj.classname = obj.classname.replace(reg, '');
  },

  /**
   * 对设置和移除obj元素的cs类进行切换:
   * @param {element}obj
   * @param {string}cs
   */
  toggleclassname: function (obj, cs) {
   if(this.hasclassname(obj,cs)){
    // 有, 删除
    this.removeclassname(obj,cs);
   }else {
    // 没有,则添加
    this.addclassname(obj,cs);
   }
  },

  /**
   * 控制元素是否显示
   * @param {element}ele 元素节点
   */
  hide: function (ele) {
   ele.style.display = 'none'
  },
  show: function (ele) {
   ele.style.display = 'block'
  },

  /**
   * 获得某个元素的某个css属性
   * @param {element}obj
   * @param {string}attr
   * @returns {string}
   */
  getcssattr: function (obj, attr) {
   if (obj.currentstyle) { // ie 和 opera
    return obj.currentstyle[attr];
   } else {
    return window.getcomputedstyle(obj, null)[attr];
   }
  },

  /**
   * 更改某个元素的某个css属性
   * @param {element}eleobj
   * @param {string}attr
   * @param {string | number}value
   */
  setcssattr: function (eleobj, attr, value) {
   eleobj.style[attr] = value;
  },

  /**
   * 缓动动画函数
   * @param eleobj 要执行缓动动画的元素对象
   * @param json 以json格式传入需要改的属性
   * @param fn 回调函数
   */
  slowmoving: function (eleobj, json, fn) {
   clearinterval(eleobj.timer);
   var speed = 0, begin = 0, target = 0, flag = false;
   eleobj.timer = setinterval(function () {
    flag = true;
    for(var key in json){
     if (json.hasownproperty(key)){
      if (key === 'opacity') {
       begin = parseint(parsefloat(mytool.getcssattr(eleobj, key)) * 100);
       target = parseint(json[key] * 100);
      } else if ('scrolltop' === key) {
       begin = math.ceil(number(eleobj.scrolltop));
       target = parseint(json[key]);
      } else {
       begin = parseint(mytool.getcssattr(eleobj, key)) || 0;
       target = parseint(json[key]);
      }
      speed = (target - begin) * 0.2;
      speed = (target > begin) ? math.ceil(speed) : math.floor(speed);
      if (key === 'opacity') {
       eleobj.style.opacity = (begin + speed) / 100;
      } else if ('scrolltop' === key) {
       eleobj.scrolltop = begin + speed;
      } else if ("zindex" === key) {
       eleobj.style[key] = json[key];
      }else {
       eleobj.style[key] = begin + speed + 'px';
      }
      if (begin !== target) {
       flag = false;
      }
     }
    }
    if(flag){
     clearinterval(eleobj.timer);
     fn && fn();
    }
   }, 100);
  },

  /**
   * 传入总秒数返回对应小时、分钟以及秒数
   * @param second 总秒数
   * @returns {{min: number , hour: number, second: number}}
   */
  secondtohourminsecond: function (second) {
   return{
    "hour" : math.floor(second / (60*60)),
    "min" : math.floor(second % (60*60) / 60),
    "second" : math.floor(second %60)
   }
  },

  /**
   * 传入一个数字,如果是一位数字,前面补0.如果是两位,返回原值。
   * @param {number}num
   * @returns {number}
   */
  addzero: function (num) {
   return num < 10 ? '0' + num : num;
  },

  /**
   * 获取字符串真实长度,目前仅针对中文和英文字符串
   * @param {string}str
   * @returns {number}
   */
  getstrlength: function (str){
  var len = 0, code = 0;
  for (var i = 0; i < str.length; i++) {
   code = str.charcodeat(i);
   if (code>=0 && code <= 127){
    len += 1;
   }else{
    len += 2;
   }
  }
  return len;
 }
 };
})(window);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。