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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。