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