JS 片段剪贴

避免登录页被框架嵌套成子页

if (window != top) {
    top.location.href = location.href;
}

参数覆盖

/*	
 * 对象参数配置
 * @param userOption  {Object} 用户参数对象
 * @param defaultOption  {Object} 默认参数对象
 * @return {Object} 参数对象
 */
function paramsExtend(userOption, defaultOption) {
	if (!userOption) return defaultOption;
	for (var key in defaultOption) {
		if (userOption[key] == null) {
			userOption[key] = defaultOption[key];
		} else if (typeof userOption[key] === 'object') {
			paramsExtend(userOption[key], defaultOption[key]);
		}
	}
	return userOption;
}

日期

/**
 *对Date的扩展,将 Date 转化为指定格式的String
 *月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
 *年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 *例子:
 *(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 *(new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
 */
Date.prototype.format = function (fmt) {
	var o = {
		"M+": this.getMonth() + 1, //月份
		"d+": this.getDate(), //日
		"h+": this.getHours(), //小时
		"m+": this.getMinutes(), //分
		"s+": this.getSeconds(), //秒
		"q+": Math.floor((this.getMonth() + 3) / 3), //季度
		"S": this.getMilliseconds() //毫秒
	};
	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	for (var k in o)
		if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}

/**
 * 获取上一个月或下一个月日期
 * @date 日期
 * @type 上prev | 下next
 */
function getPreOrAfterDate(date, type) {
	date = new Date(date);
	var year = date.getFullYear(), //获取当前日期的年份  
		month = date.getMonth(), //获取当前日期的月份index
		day = date.getDate(); //获取当前日期的日
	var days = new Date(year, month + 1, 0);  
	days = days.getDate(); //获取当前日期中月的天数  
	var newYear = year, newMonthIndex = 0;
	//月
	if(type == "prev"){
		newMonthIndex = parseInt(month) - 1;
		if(newMonthIndex < 0){
			newYear = parseInt(newYear) - 1;
			newMonthIndex = 11;
		}
	}else if(type == "next"){
		newMonthIndex = parseInt(month) + 1;
		if(newMonthIndex > 11){
			newYear = parseInt(newYear) + 1;
			newMonthIndex = 0;
		}
	}
	//日
	var newDay = day;
	var	newDate = new Date(newYear, newMonthIndex+1, 0);
	newDays = newDate.getDate();
	if(type == "prev"){
		if(newDay > newDays){
			newDay = newDays;
		}
	}else if(type == "next"){
		newDay = newDays;
	}
	return new Date(newYear, newMonthIndex, newDay);
}

/**
 * 获取上一个月或下一个月日期
 * @date 格式为yyyy-mm-dd的日期
 * @type 上prev | 下after
 */
function getPreOrAfterDate(date, type) {
	var arr = date.split('-');
	var year = arr[0], //获取当前日期的年份
		month = arr[1], //获取当前日期的月份
		day = arr[2]; //获取当前日期的日
	var days = new Date(year, month, 0);
	days = days.getDate(); //获取当前日期中月的天数
	var step = 1, type = type || 'after';
	var year2 = year,
		month2 = parseInt(month);
	if(type == 'prev'){
		month2 = month2 - step;
	}else if(type == 'after'){
		month2 = month2 + step;
	}
	if (month2 == 0) {//如果是1月份,则取上一年的12月份
		year2 = parseInt(year2) - 1;
		month2 = 12;
	}else if (month2 == 13) {
		year2 = parseInt(year2) + 1;
		month2 = 1;
	}
	var day2 = day,
		days2 = new Date(year2, month2, 0);
	days2 = days2.getDate();
	if (day2 > days2) {//如果原来日期大于上一月的日期,则取当月的最大日期。比如3月的30日,在2月中没有30
		day2 = days2;
	}
	if (month2 < 10) {
		month2 = '0' + month2;//月份填补成2位。
	}
	var res = year2 + '-' + month2 + '-' + day2;
	return res;
}

function getFullDate(date) {
	//返回 YYYY年MM月DD日
	var year = month = day = ' ';
	if (isNaN(date) && !isNaN(Date.parse(date))) {
		var newDate = new Date(date);
		year = newDate.getFullYear();
		month = newDate.getMonth() + 1;
		day = newDate.getDate();
		month = month < 10 ? '0' + month : month;
		day = day < 10 ? '0' + day : day;
	}
	return year + '年' + month + '月' + day + '日';
}

金额

function getUpperDigit(n) {
	//数字转大写
	var fraction = ['角', '分'];
	var digit = [
		'零', '壹', '贰', '叁', '肆',
		'伍', '陆', '柒', '捌', '玖'
	];
	var unit = [
		['元', '万', '亿'],
		['', '拾', '佰', '仟']
	];
	var head = n < 0 ? '欠' : '';
	n = Math.abs(n);
	var s = '';
	for (var i = 0; i < fraction.length; i++) {
		s += (digit[Math.floor(n * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '');
	}
	s = s || '整';
	n = Math.floor(n);
	for (var i = 0; i < unit[0].length && n > 0; i++) {
		var p = '';
		for (var j = 0; j < unit[1].length && n > 0; j++) {
			p = digit[n % 10] + unit[1][j] + p;
			n = Math.floor(n / 10);
		}
		s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s;
	}
	return head + s.replace(/(零.)*零元/, '元').replace(/(零.)+/g, '零').replace(/^整$/, '零元整');
}
原文地址:https://www.cnblogs.com/KevinTseng/p/12039693.html