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

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(/^整$/, '零元整');
}

JS 编程艺术的更多相关文章

  1. 【js 编程艺术】小制作一

    最近在看js编程艺术,照葫芦画瓢,做了一个小网页.作为一枚前端渣渣,遇到了好多坑,在这里就不提了. 首先是html代码 /*gallery.html*/<!DOCTYPE html> &l ...

  2. 【js编程艺术】小制作六

    1.html /* movie.html*/<!DOCTYPE html> <html> <head> <meta charset="utf-8&q ...

  3. 【js编程艺术】小制作五

    1.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  4. 【js 编程艺术】小制作四

    1. html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  5. 【js 编程艺术】小制作三

    1.html文件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  6. 【js 编程艺术】小制作二

    首先是一个html文档 /* explanation.html */<!DOCTYPE html> <html> <head> <meta charset=& ...

  7. 【js编程艺术】 之有用的函数

    学习js的过程中有几个有用的函数. //添加事件函数 function addLoadEvent(func) { var oldonload = window.onload; if(typeof wi ...

  8. JavaScript DOM 编程艺术·setInterval与setTimeout的动画实现解析

    先贴上moveElement()函数的大纲,为了方便观看,删了部分代码,完整版粘到文章后面. function moveElement(elementID,final_x,final_y,interv ...

  9. 学习Javascript DOM 编程艺术的一点心得

    最近又看了一遍JS DOM编程艺术,照例来写一写读后感. 其实,我从中学到最深的是几个概念:1.平稳退化.当浏览器并不支持JS的时候网页的基本核心功能是还可以用的:2.逐渐增强.在原始的信息层上用其他 ...

随机推荐

  1. kotlin创建类的实例

    Java 中使用new关键字,但是在kotlin中调用函数和创建类的实例直接省略new 比如 new myClass()变成类myClass()

  2. BUUCTF-writeup

    Reverse RSA 使用openssl模块 rsa -pubin -text -modulus -in pub.key得到n值,在 factordb.com上分解大素数得到p,q值,脚本生成pri ...

  3. Java NIO学习笔记四 NIO选择器

    Java NIO选择器 A Selector是一个Java NIO组件,可以检查一个或多个NIO通道,并确定哪些通道已准备就绪,例如读取或写入.这样一个线程可以管理多个通道,从而管理多个网络连接. 为 ...

  4. mudos源码分析

    错误捕捉相关的代码在simulate.c void throw_error() { )->framekind & FRAME_MASK) == FRAME_CATCH) { LONGJM ...

  5. jenkins通过ssh登不上远程主机

    https://blog.csdn.net/cdnight/article/details/81078191 就是需要切换jenkins用户,用jenkins用户生产的秘钥拷到其他主机上

  6. CockroachDB学习笔记——[译]CockroachDB是如何进行分布式原子事务的

    原文:How CockroachDB Does Distributed, Atomic Transactions 原文链接:https://www.cockroachlabs.com/blog/how ...

  7. 继承System.Web.UI.Page的页面基类

    服务器端的page类      所有我们编写的页面都继承自page类,可见page类是非常重要的,page类提供了哪些功能,直接决定了我们的页面类可以继承什么功能,或者说,直接决定了我们的页面类功能的 ...

  8. JS 事件介绍

    1.设置js对象属性为事件处理程序 事件处理程序属性的名字由“on”后面跟着事件名组成.这些属性名 都必须小写 事件处理程序的缺点:设计都是围绕着假设每个事件目标对于每种事件类型将最多只有一个处理程序 ...

  9. mysql表如何使用redis保存?

    mysql表: userid username password email 9 Lisi 111111 lisi@163.com 对应redis存储: 127.0.0.1:6379> set ...

  10. github pages + hexo 搭建 blog 遇到的问题

    一. ERROR Deployer not found: git $ hexo d ERROR Deployer not found: git npm install --save hexo-depl ...