GooFunc.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /* 本系列框架中,一些用得上的小功能函数,一些UI必须使用到它们,用户也可以单独拿出来用 */
  2. // 获取一个DIV的绝对坐标的功能函数,即使是非绝对定位,一样能获取到
  3. function getElCoordinate (dom) {
  4. var t = dom.offsetTop;
  5. var l = dom.offsetLeft;
  6. dom = dom.offsetParent;
  7. while (dom) {
  8. t += dom.offsetTop;
  9. l += dom.offsetLeft;
  10. dom = dom.offsetParent;
  11. };
  12. return {
  13. top: t,
  14. left: l
  15. };
  16. }
  17. // 兼容各种浏览器的,获取鼠标真实位置
  18. function mousePosition (ev) {
  19. if (!ev) ev = window.event;
  20. if (ev.pageX || ev.pageY) {
  21. return {
  22. x: ev.pageX,
  23. y: ev.pageY
  24. };
  25. }
  26. return {
  27. x: ev.clientX + document.documentElement.scrollLeft - document.body.clientLeft,
  28. y: ev.clientY + document.documentElement.scrollTop - document.body.clientTop
  29. };
  30. }
  31. // 给DATE类添加一个格式化输出字串的方法
  32. Date.prototype.format = function (format) {
  33. var o = {
  34. 'M+': this.getMonth() + 1, // month
  35. 'd+': this.getDate(), // day
  36. 'h+': this.getHours(), // hour
  37. 'm+': this.getMinutes(), // minute
  38. 's+': this.getSeconds(), // second ‘
  39. // quarter
  40. 'q+': Math.floor((this.getMonth() + 3) / 3),
  41. 'S': this.getMilliseconds() // millisecond
  42. }
  43. if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
  44. for (var k in o) {
  45. if (new RegExp('(' + k + ')').test(format)) {
  46. format = format.replace(RegExp.$1,
  47. RegExp.$1.length == 1 ? o[k]
  48. : ('00' + o[k]).substr(('' + o[k]).length));
  49. }
  50. }
  51. return format;
  52. }
  53. // JS]根据格式字符串分析日期(MM与自动匹配两位的09和一位的9)
  54. // alert(getDateFromFormat(sDate,sFormat));
  55. function getDateFromFormat (dateString, formatString) {
  56. var regDate = /\d+/g;
  57. var regFormat = /[YyMmdHhSs]+/g;
  58. var dateMatches = dateString.match(regDate);
  59. var formatmatches = formatString.match(regFormat);
  60. var date = new Date();
  61. for (var i = 0; i < dateMatches.length; i++) {
  62. switch (formatmatches[i].substring(0, 1)) {
  63. case 'Y':
  64. case 'y':
  65. date.setFullYear(parseInt(dateMatches[i]));
  66. break;
  67. case 'M':
  68. date.setMonth(parseInt(dateMatches[i]) - 1);
  69. break;
  70. case 'd':
  71. date.setDate(parseInt(dateMatches[i]));
  72. break;
  73. case 'H':
  74. case 'h':
  75. date.setHours(parseInt(dateMatches[i]));
  76. break;
  77. case 'm':
  78. date.setMinutes(parseInt(dateMatches[i]));
  79. break;
  80. case 's':
  81. date.setSeconds(parseInt(dateMatches[i]));
  82. break;
  83. }
  84. }
  85. return date;
  86. }
  87. // 货币分析成浮点数
  88. // alert(parseCurrency("¥1,900,000.12"));
  89. function parseCurrency (currentString) {
  90. var regParser = /[\d\.]+/g;
  91. var matches = currentString.match(regParser);
  92. var result = '';
  93. var dot = false;
  94. for (var i = 0; i < matches.length; i++) {
  95. var temp = matches[i];
  96. if (temp == '.') {
  97. if (dot) continue;
  98. }
  99. result += temp;
  100. }
  101. return parseFloat(result);
  102. }
  103. // 将#XXXXXX颜色格式转换为RGB格式,并附加上透明度
  104. function brgba (hex, opacity) {
  105. if (!/#?\d+/g.test(hex)) return hex; // 如果是“red”格式的颜色值,则不转换。//正则错误,参考后面的PS内容
  106. var h = hex.charAt(0) == '#' ? hex.substring(1) : hex,
  107. r = parseInt(h.substring(0, 2), 16),
  108. g = parseInt(h.substring(2, 4), 16),
  109. b = parseInt(h.substring(4, 6), 16),
  110. a = opacity;
  111. return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
  112. }