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. MFC 显示CImg图片

    很多示例关于CImg都是基于控制台的,如何把它用于MFC中显示. Problem:直接按照控制台示例写入MFC程序中,当程序执行完display后,其后面的代码便不再执行. solution:开辟新的 ...

  2. 隐式intent

    使用隐式Intent,我们不仅可以启动自己程序内的活动,还可以启动其他程序的活动, 这里我们首先指定了Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的 ...

  3. Dijkstra算法为什么权值不能为负

    Dijkstra算法当中将节点分为已求得最短路径的集合(记为S)和未确定最短路径的个集合(记为U),归入S集合的节点的最短路径及其长度不再变更,如果边上的权值允许为负值,那么有可能出现当与S内某点(记 ...

  4. mvc与mvvm

    mvc:被动型式的,也就是说,只有view有要求的时候,控制器才有反应 View     Controller       Model 可以把一个页面看作是由多个view组成 Controller控制 ...

  5. Invocation of init method failed; nested exception is org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.impl

    严重: Exception sending context initialized event to listener instance of class org.springframework.we ...

  6. Android设置虚线、圆角、渐变

    有图又真相,先上图再说. 点击效果: 设置虚线: <?xml version="1.0" encoding="utf-8"?> <shape  ...

  7. sync fsync fdatasync ---systemtap跟踪

    aa.stp: probe kernel .function ( "sys_sync" ) { printf ( "probfunc:%s fun:%s\n", ...

  8. Where Jboss7.1 take war application to deploy--reference

    Question i've deployed the jboss-as-helloworld-errai application in my standalone jboss7.1 instance, ...

  9. 多线程(NSThread、NSOperation、GCD)编程浅谈

    一.基本概念 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动.可以理解成一个运行中的应用程序.线程:程序执行流的最小单元,线程是进程中的一个实体.同步:只能在当前线程按先后顺序依次执行 ...

  10. Android(java)学习笔记235:多媒体之计算机图形表示方式

    1.多媒体 很多媒体:文字(TextView,简单不讲),图片,声音,视频等等.   2.图片 计算机如何表示图片的? (1)bmp 高质量保存    256色位图:图片中的每个像素点可以有256种颜 ...