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. kafka主要配置

    Kafka为broker,producer和consumer提供了很多的配置参数. 了解并理解这些配置参数对于我们使用kafka是非常重要的. 官网配置地址: Configuration 每个kafk ...

  2. 数据结构——Currency System in Geraldion

    题目: Description A magic island Geraldion, where Gerald lives, has its own currency system. It uses b ...

  3. 动态规划——数位dp

    通过先前在<动态规划——背包问题>中关于动态规划的初探,我们其实可以看到,动态规划其实不是像凸包.扩展欧几里得等是具体的算法,而是一种在解决问题中决策的思想.在不同的题目中,我们都需要根据 ...

  4. 上海Uber优步司机奖励政策(1月18日~1月24日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. ORA-01078:failure in processing system parameters

    一.使用环境操作系统:rhel 6.5 x64数据库:Oracle 11.2.0.1.0数据库主目录:/u01/app/oracle/product/11.2.0/ 二.问题描述用sys用户登录sql ...

  6. python数据的存储和持久化操作

    Python的数据持久化操作主要是六类:普通文件.DBM文件.Pickled对象存储.shelve对象存储.对象数据库存储.关系数据库存储. 普通文件不解释了,DBM就是把字符串的键值对存储在文件里: ...

  7. DCL双检查锁机制实现的线程安全的单例模式

    public class MyObject { private volatile static MyObject myObject; private MyObject(){} public stati ...

  8. Android 4.4(KitKat)中VSync信号的虚拟化

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/17293325 Android 4.1(Jelly Bean)引入了Vsync(Vertic ...

  9. 编写一个方法,输入DOM节点,返回包含所有父节点的一个数组

    编写一个方法,输入DOM节点,返回包含所有父节点的一个数组 function getParentsNodes(element) { var parents = []; var getParentsNo ...

  10. MYSQL 体系结构图-LRU FREELIST FLUSH LIST