工具函数之JS

时间:2024-10-26 11:35:14

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;
}

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