1. 判断元素是否有滚动条

 /*
检测元素是否出现滚动条 @param [object HTMLElement] elm The HTMLElement object
@return [Object] The Object contains result 原理:
1. 浏览器在没有滚动条的时候,scrollLeft/scrollTop赋值后不会发生变化,始终是0;
2. scrollLeft,scrollTop为负数值时会报错 Usage:
var scrollObj = scrollDetect(document.documentElement);
scrollObj.isScrollX true:有横向滚动条 false:无横向滚动条
scrollObj.isScrollY true:有纵向滚动条 false:无纵向滚动条
*/
function scrollDetect(elm) {
var tmp,
scrollX = false,
scrollY = false; //Test horizontal scroll
tmp = elm.scrollLeft;
elm.scrollLeft += (tmp > 0) ? -1 : 1;
elm.scrollLeft !== tmp && (scrollX = scrollX || true);
elm.scrollLeft = tmp; //Test vertical scroll
tmp = elm.scrollTop;
elm.scrollTop += (tmp > 0) ? -1 : 1;
elm.scrollTop !== tmp && (scrollY = scrollY || true);
elm.scrollTop = tmp; return {
'isScrollX': scrollX,
'isScrollY': scrollY
};
}

2. 获取浏览器滚动条宽度

 /*
获取浏览器滚动条宽度 @return [Number] The browser's scrollbar width. 原理:
1. 向页面插入一个看不到的元素A,并设置它的宽度w,自身显示滚动条;
2. 浏览器滚动条的宽度 = w - 元素A的clientWidth Usage:
var scrollBarWidth = getScroallBarWidth();
*/
function getScrollBarWidth() {
var testElm, tmp; testElm = document.createElement('div');
testElm.style.cssText = "position:absolute;width:50px;height:50px;top:-1000px;overflow-y:scroll;";
document.body.appendChild(testElm); tmp = testElm.clientWidth;
document.body.removeChild(testElm);
return 50 - tmp;
}

3. 日期时间格式化函数

 /*
格式化日期时间函数 @param [Date] dateObj The Date object.
@param [String] format The formated datetime template string.
@return [String] The formated datetime string. Usage:
dateFormat(new Date(), 'YYYY年MM月dd日hh小时mm分ss秒');
2014年08月09日11小时22分27秒
*/ function dateFormat(dateObj, format) {
var o = {
"M+": dateObj.getMonth() + 1, //month
"d+": dateObj.getDate(), //day
"h+": dateObj.getHours(), //hour
"m+": dateObj.getMinutes(), //minute
"s+": dateObj.getSeconds(), //second
} if (/(Y+)/.test(format)) {
format = format.replace(RegExp.$1, (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length));
} for (var k in o) {
if (o.hasOwnProperty(k)) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
} } return format;
}

总结项目中经常用到的通用工具函数。

工具函数之JS的更多相关文章

  1. 你要的几个JS实用工具函数(持续更新)

    今天,我们来总结下我们平常使用的工具函数,希望对大家有用.1.封装fetch 源码: /** * 封装fetch函数,用Promise做回调 * @type {{get: (function(*=)) ...

  2. 【JS】403- JavaScript 工具函数大全(新)

    前言 一线大厂笔试题灵感来源 目录: 第一部分:数组 第二部分:函数 第三部分:字符串 第四部分:对象 第五部分:数字 第六部分:浏览器操作及其它 筛选自以下两篇文章: <127 Helpful ...

  3. JQuery中的工具函数总结

    前提引入 前提当然也是要引入Jquery啦... <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" typ ...

  4. jQuery工具函数(转)

    原文地址:http://www.cnblogs.com/kissdodog/archive/2012/12/27/2835561.html 作者:逆心 ------------------------ ...

  5. 读<jQuery 权威指南>[6]--实用工具函数

    官方地址:http://api.jquery.com/category/utilities/ 一.数组和对象操作 1. $.each——遍历 $.each(obj,function(param1,pa ...

  6. 从零开始学习jQuery (九) jQuery工具函数

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就 ...

  7. jQuery源码分析-03扩展工具函数jQuery.extend

    // 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制 ...

  8. 【jQuery源码】工具函数

    //扩展工具函数 jQuery.extend({ // Unique for each copy of jQuery on the page expando: "jQuery" + ...

  9. jQuery基本API小结(下)---工具函数-基本插件

    一.工具函数 1.获取浏览器的名称与版本信息 在jQuery中,通过$.browser对象可以获取浏览器的名称和版本信息,如$.browser.chrome为true,表示当前为Chrome浏览器,$ ...

随机推荐

  1. Java Annotation 必须掌握的特性

    什么是Annotation? Annotation翻译为中文即为注解,意思就是提供除了程序本身逻辑外的额外的数据信息.Annotation对于标注的代码没有直接的影响,它不可以直接与标注的代码产生交互 ...

  2. GCD中有哪几种Queue?你自己建立过串行Queue吗?背后的线程模型是什么样的

    一共有五种,看图 Paste_Image.png 主线程也就是那个main,一般后台处理数据就就用default那个.创建过一个queue,处理NSMutableArray的时候都在在这一个queue ...

  3. Esxi 5.0下配置LSI SAS RAID卡

    公司有几台服务器,安装的是ESXI5.0的虚拟机,原来使用的是普通的台式机,现在新购的专用服务器并安装的LSI 8708 SAS RAID卡(服务器自带的板载RAID卡ESXI不支持),现在要将虚拟机 ...

  4. angularJS 指令二

    指令详解1.用directive()方法来定义指令.directive('myDirective',function($timeout,userDefinedService){ return {};} ...

  5. [转]windows10 64位环境下安装mysql5.7.17

    今天以zip模式在windows10 64位环境下安装mysql5.7,到最后一步提示mysql服务无法启动. 安装步骤如下: 1.配置环境变量 我的电脑->属性->高级->环境变量 ...

  6. 3rd day

    今天学习创建了几个简单的表:

  7. python2.+进化至python3.+ 语法变动差异(不定期更新)

    1.输出 python2.+ 输出: print "" python3.+ 输出: print ("") 2.打开文件 python2.+ 打开文件: file ...

  8. 【微信公众号】将微信公众号消息里的FromUserName即OpenID转成UnionID

    最近在调试微信公众号开发者模式,处理公众号消息,收到如下回调消息内容 <xml><ToUserName><![CDATA[gh_29********21]]>< ...

  9. 【转】Android Studio中Git的配置及协同开发

    一. Android Stutio配置git   setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置 ...

  10. JAVA大数类

    JAVA大数类api http://man.ddvip.com/program/java_api_zh/java/math/BigInteger.html#method_summary 不仅仅只能查J ...