/* 本系列框架中,一些用得上的小功能函数,一些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 + ')'
|
}
|