代码改变世界

JavaScript常用方法

2013-05-04 14:55  hduhans  阅读(143)  评论(0)    收藏  举报

1.格式化字符串,输出人民币格式 如 "1000"=>"1,000.00"

View Code
//格式化字符串 转换成人民币 如"1000"=>"1,000.00"
function outputMoney(number) {
    number = number.replace(/\,/g, "");
    if (number == "") return "";
    if (number < 0) {
        return '-' + outputDollars(Math.floor(Math.abs(number) - 0) + '') + outputCents(Math.abs(number) - 0);
    } else {
        return outputDollars(Math.floor(number - 0) + '') + outputCents(number - 0);
    }
}
function outputDollars(number) {
    if (number.length <= 3) {
        return (number == '' ? '0' : number);
    } else {
        var mod = number.length % 3;
        var output = (mod == 0 ? '' : (number.substring(0, mod)));
        for (i = 0; i < Math.floor(number.length / 3); i++) {
            if ((mod == 0) && (i == 0)) {
                output += number.substring(mod + 3 * i, mod + 3 * i + 3);
            } else {
                output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
            }
        }
        return (output);
    }
}
function outputCents(amount) {
    amount = Math.round(((amount) - Math.floor(amount)) * 100);
    return (amount < 10 ? '.0' + amount : '.' + amount);
}

2.字符串替换所有(默认replace只替换匹配的第一项)

//替换字符串
String.prototype.replaceAll = function (s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}
View Code

3.数字金额转大写金额汉字,如165,491.36=>拾陆万伍仟肆佰玖拾壹元叁角陆分 

//金额转汉字
function chineseNumber(num) {
    if (isNaN(num) || num > Math.pow(10, 12))
        return "";
    var cn = "零壹贰叁肆伍陆柒捌玖";
    var unit = new Array("拾佰仟", "分角");
    var unit1 = new Array("万亿", "");
    var numArray = num.toString().split(".");
    var start = new Array(numArray[0].length - 1, 2);

    function toChinese(num, index) {
        var num = num.replace(/\d/g, function ($1) {
            return cn.charAt($1) + unit[index].charAt(start-- % 4 ? start % 4 : -1);
        })
        return num;
    }

    for (var i = 0; i < numArray.length; i++) {
        var tmp = "";
        for (var j = 0; j * 4 < numArray[i].length; j++) {
            var strIndex = numArray[i].length - (j + 1) * 4;
            var str = numArray[i].substring(strIndex, strIndex + 4);
            var start = i ? 2 : str.length - 1;
            var tmp1 = toChinese(str, i);
            tmp1 = tmp1.replace(/(零.)+/g, "零").replace(/零+$/, "");
            tmp1 = tmp1.replace(/^壹拾/, "拾");
            tmp = (tmp1 + unit1[i].charAt(j - 1)) + tmp;
        }
        numArray[i] = tmp;
    }

    numArray[1] = numArray[1] ? numArray[1] : "";
    numArray[0] = numArray[0] ? numArray[0] + "元" : numArray[0], numArray[1] = numArray[1].replace(/^零+/, "");
    numArray[1] = numArray[1].match(/分/) ? numArray[1] : numArray[1];
    return numArray[0] + numArray[1];
}
View Code

4.判断金额类型,只允许输入数字和一个小数点,且小数点后保留2位,input文本框输入金额格式判断

<script>
    function chkPrice(obj){ 
        //必须数字开头
        obj.value = obj.value.replace(/[^\d.]/g,""); 
        //第一位不能为.
        obj.value = obj.value.replace(/^\./g,""); 
        //保证只有出现一个.而没有多个. 
        obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$","."); 
        //保留2位小数
        var n=obj.value.indexOf(".")
        if(n!=-1){
            var l=obj.value.substr(n+1);
            if(l.length>2) obj.value=obj.value.substring(0,n+3);
        }
        
    } 
    function chkLast(obj){ 
        // 如果出现非法字符就截取掉 
        if(obj.value.substr((obj.value.length - 1), 1) == '.') 
            obj.value = obj.value.substr(0,(obj.value.length - 1)); 
        //如果是整数 加上".00"
        var n=obj.value.indexOf(".");
        if(n==-1){
            obj.value=obj.value+".00";
        }else if(obj.value.substr(n+1).length==1){  //如果小数点只有一位 加一个"0"
            obj.value=obj.value+"0";
        }
        
    } 
</script>

<input type="text" name="txtFee" id="txtFee" class="common" onkeyup="chkPrice(this);" onblur="chkLast(this)" onpaste="javascript: return false;"/> 
View Code

5.Js之Trim()方法,去除首尾空格,"   abcd   " => "abcd"

//去除字符串首尾空格 
function Trim(str) {
    str = String(str);
    function LTrim(str) {
        var i;
        for (i = 0; i < str.length; i++) {
            if (str.charAt(i) != " " && str.charAt(i) != " ") break;
        }
        str = str.substring(i, str.length);
        return str;
    }
    function RTrim(str) {
        var i;
        for (i = str.length - 1; i >= 0; i--) {
            if (str.charAt(i) != " " && str.charAt(i) != " ") break;
        }
        str = str.substring(0, i + 1);
        return str;
    }
    return LTrim(RTrim(str));
}
View Code

6.Js通过字符串动态调用方法

function pap(str){
    document.write("call function pap,params is "+str);
}
var funName = "pap";
var funParams = "hans";
var fn = window[funName];
//动态调用方法一
fn(funParams);
//动态调用方法二
eval("pap('good')");
View Code

7.Js正则判断字符串是否为数字 

var isNum = function(str){
       var rex = /^\d+$/;
       return rex.test(str);
}
View Code

8.Js正则获取内容

alert('<head>csdn</head>'.match(/<head>([\s\S]*?)<\/head>/)[1]);
View Code