GooFunc.js 3.5 KB

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