工具函数之JS

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

 1 /*

 2 检测元素是否出现滚动条

 3 

 4 @param [object HTMLElement] elm The HTMLElement object

 5 @return [Object] The Object contains result

 6 

 7 原理:

 8 1. 浏览器在没有滚动条的时候,scrollLeft/scrollTop赋值后不会发生变化,始终是0;

 9 2. scrollLeft,scrollTop为负数值时会报错

10 

11 Usage:

12 var scrollObj = scrollDetect(document.documentElement);

13 scrollObj.isScrollX  true:有横向滚动条 false:无横向滚动条

14 scrollObj.isScrollY  true:有纵向滚动条 false:无纵向滚动条

15 */

16 function scrollDetect(elm) {

17     var tmp,

18         scrollX = false,

19         scrollY = false;

20 

21     //Test horizontal scroll

22     tmp = elm.scrollLeft;

23     elm.scrollLeft += (tmp > 0) ? -1 : 1;

24     elm.scrollLeft !== tmp && (scrollX = scrollX || true);

25     elm.scrollLeft = tmp;

26 

27     //Test vertical scroll

28     tmp = elm.scrollTop;

29     elm.scrollTop += (tmp > 0) ? -1 : 1;

30     elm.scrollTop !== tmp && (scrollY = scrollY || true);

31     elm.scrollTop = tmp;

32 

33 

34     return {

35         'isScrollX': scrollX,

36         'isScrollY': scrollY

37     };

38 }

 

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

 1 /*

 2 获取浏览器滚动条宽度

 3 

 4 @return [Number] The browser's scrollbar width.

 5 

 6 原理:

 7 1. 向页面插入一个看不到的元素A,并设置它的宽度w,自身显示滚动条;

 8 2. 浏览器滚动条的宽度 = w - 元素A的clientWidth

 9 

10 Usage:

11 var scrollBarWidth = getScroallBarWidth();

12 */

13 function getScrollBarWidth() {

14     var testElm, tmp;

15 

16     testElm = document.createElement('div');

17     testElm.style.cssText = "position:absolute;width:50px;height:50px;top:-1000px;overflow-y:scroll;";

18     document.body.appendChild(testElm);

19 

20     tmp = testElm.clientWidth;

21     document.body.removeChild(testElm);

22     return 50 - tmp;

23 }

 

3. 日期时间格式化函数 

 1 /*

 2 格式化日期时间函数

 3 

 4 @param [Date] dateObj The Date object.

 5 @param [String] format The formated datetime template string.

 6 @return [String] The formated datetime string.

 7 

 8 Usage:

 9 dateFormat(new Date(), 'YYYY年MM月dd日hh小时mm分ss秒');

10 2014年08月09日11小时22分27秒 

11 */

12 

13 function dateFormat(dateObj, format) {

14     var o = {

15         "M+": dateObj.getMonth() + 1, //month

16         "d+": dateObj.getDate(), //day

17         "h+": dateObj.getHours(), //hour

18         "m+": dateObj.getMinutes(), //minute

19         "s+": dateObj.getSeconds(), //second

20     }

21 

22     if (/(Y+)/.test(format)) {

23         format = format.replace(RegExp.$1, (dateObj.getFullYear() + "").substr(4 - RegExp.$1.length));

24     }

25 

26     for (var k in o) {

27         if (o.hasOwnProperty(k)) {

28             if (new RegExp("(" + k + ")").test(format)) {

29                 format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));

30             }

31         }

32 

33     }

34     

35     return format;

36 }

 

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

你可能感兴趣的:(js)