zoukankan      html  css  js  c++  java
  • 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(/^整$/, '零元整');
    }
    
  • 相关阅读:
    入门菜鸟
    FZU 1202
    XMU 1246
    Codeforces 294E Shaass the Great 树形dp
    Codeforces 773D Perishable Roads 最短路 (看题解)
    Codeforces 814E An unavoidable detour for home dp
    Codeforces 567E President and Roads 最短路 + tarjan求桥
    Codeforces 567F Mausoleum dp
    Codeforces 908G New Year and Original Order 数位dp
    Codeforces 813D Two Melodies dp
  • 原文地址:https://www.cnblogs.com/KevinTseng/p/12039693.html
Copyright © 2011-2022 走看看