工具函数之JS
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的更多相关文章
- 你要的几个JS实用工具函数(持续更新)
今天,我们来总结下我们平常使用的工具函数,希望对大家有用.1.封装fetch 源码: /** * 封装fetch函数,用Promise做回调 * @type {{get: (function(*=)) ...
- 【JS】403- JavaScript 工具函数大全(新)
前言 一线大厂笔试题灵感来源 目录: 第一部分:数组 第二部分:函数 第三部分:字符串 第四部分:对象 第五部分:数字 第六部分:浏览器操作及其它 筛选自以下两篇文章: <127 Helpful ...
- JQuery中的工具函数总结
前提引入 前提当然也是要引入Jquery啦... <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" typ ...
- jQuery工具函数(转)
原文地址:http://www.cnblogs.com/kissdodog/archive/2012/12/27/2835561.html 作者:逆心 ------------------------ ...
- 读<jQuery 权威指南>[6]--实用工具函数
官方地址:http://api.jquery.com/category/utilities/ 一.数组和对象操作 1. $.each——遍历 $.each(obj,function(param1,pa ...
- 从零开始学习jQuery (九) jQuery工具函数
一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就 ...
- jQuery源码分析-03扩展工具函数jQuery.extend
// 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制 ...
- 【jQuery源码】工具函数
//扩展工具函数 jQuery.extend({ // Unique for each copy of jQuery on the page expando: "jQuery" + ...
- jQuery基本API小结(下)---工具函数-基本插件
一.工具函数 1.获取浏览器的名称与版本信息 在jQuery中,通过$.browser对象可以获取浏览器的名称和版本信息,如$.browser.chrome为true,表示当前为Chrome浏览器,$ ...
随机推荐
- kafka主要配置
Kafka为broker,producer和consumer提供了很多的配置参数. 了解并理解这些配置参数对于我们使用kafka是非常重要的. 官网配置地址: Configuration 每个kafk ...
- 数据结构——Currency System in Geraldion
题目: Description A magic island Geraldion, where Gerald lives, has its own currency system. It uses b ...
- 动态规划——数位dp
通过先前在<动态规划——背包问题>中关于动态规划的初探,我们其实可以看到,动态规划其实不是像凸包.扩展欧几里得等是具体的算法,而是一种在解决问题中决策的思想.在不同的题目中,我们都需要根据 ...
- 上海Uber优步司机奖励政策(1月18日~1月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 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 ...
- python数据的存储和持久化操作
Python的数据持久化操作主要是六类:普通文件.DBM文件.Pickled对象存储.shelve对象存储.对象数据库存储.关系数据库存储. 普通文件不解释了,DBM就是把字符串的键值对存储在文件里: ...
- DCL双检查锁机制实现的线程安全的单例模式
public class MyObject { private volatile static MyObject myObject; private MyObject(){} public stati ...
- Android 4.4(KitKat)中VSync信号的虚拟化
原文地址:http://blog.csdn.net/jinzhuojun/article/details/17293325 Android 4.1(Jelly Bean)引入了Vsync(Vertic ...
- 编写一个方法,输入DOM节点,返回包含所有父节点的一个数组
编写一个方法,输入DOM节点,返回包含所有父节点的一个数组 function getParentsNodes(element) { var parents = []; var getParentsNo ...
- MYSQL 体系结构图-LRU FREELIST FLUSH LIST