<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language=javascript> 
<!-- 
function Arabia_to_Chinese(number)
{
var i = 0;
var Mum = number;
for(i=Num.length-1;i>=0;i--)
{
Num = Num.replace(",","")//替换tomoney()中的“,”
Num = Num.replace(" ","")//替换tomoney()中的空格
}
Num = Num.replace("¥","")//替换掉可能出现的¥字符
if(isNaN(Num))
{//验证输入的字符是否为数字
alert("请检查小写金额是否正确");
return;
}
   //---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
   var part = String(Num).split(".");
   var newchar = ""; 
   //小数点前进行转化
for(i=part[0].length-1;i>=0;i--)
{
if(part[0].length > 10)
{
alert("位数过大,无法计算");return "";
}//若数量超过拾亿单位,提示
var tmpnewchar = ""
var perchar = part[0].charAt(i);
switch(perchar)
{
case "0":
tmpnewchar="零" + tmpnewchar;
return document.write(tmpnewchar);
break;
case "1":
tmpnewchar="壹" + tmpnewchar;
return tmpnewchar;
case "2":
tmpnewchar="贰" + tmpnewchar;
return tmpnewchar;
}
}
}
--> 
</script> 
</head>
<body><script language="javascript">
Arabia_to_Chinese(0);
</script>
</body>
</html>
测试什么都没显示,求指教哪里写错了?

解决方案 »

  1.   

    //var Mum = number;
    var Num = number.toString();//变量名称错了并且要转为string
      

  2.   

        function parseChinese(n) {
            var c = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
            var p = ["分","角","元","拾","百","千","万","拾","百","千","亿","拾","百","千"];
            var temp = (/^(0|[1-9])\d*(\.\d+)?$/).test(n)? n : null;
            var i = -1,result = null;
            if(temp) {
                temp = parseFloat(temp).toFixed(2);
                i = (/\.\d+$/).test(temp)? -1 : 1;
                result = temp.toString().replace(/\./g, "").split("").reverse().join("").replace(/\d/g, function(a) {i++; return p[i] + c[a]}).split("").reverse().join("").replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/(千|百|拾)零(元|万|亿)/g,"$1$2").replace(/(亿零)万/g, "$1").replace(/(万零)元/g, "$1").replace(/(零)+/g, "零").replace(/(亿)零(元)/g, "$1$2").replace(/(零角)*零分$/g, "整");
            }
            return result;
        }
        alert(parseChinese(1234567.89));
      

  3.   

    你只是 return了,并没有显示出来啊等于你考试在草纸上算了半天没写到考卷上一样。。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>无标题文档</title>
    <script language=javascript> 
    <!-- 
    function Arabia_to_Chinese(number)
    {
        var i = 0;
        var Mum = number;
        for(i=Num.length-1;i>=0;i--)
        {
            Num = Num.replace(",","")//替换tomoney()中的“,”
            Num = Num.replace(" ","")//替换tomoney()中的空格
        }
        Num = Num.replace("¥","")//替换掉可能出现的¥字符
        if(isNaN(Num))
        {//验证输入的字符是否为数字
            alert("请检查小写金额是否正确");
            return;
        }
       //---字符处理完毕,开始转换,转换采用前后两部分分别转换---//
       var part = String(Num).split(".");
       var newchar = ""; 
       //小数点前进行转化
        for(i=part[0].length-1;i>=0;i--)
        {
            if(part[0].length > 10)
            {
                alert("位数过大,无法计算");return "";
            }//若数量超过拾亿单位,提示
            var tmpnewchar = ""
            var perchar = part[0].charAt(i);
            switch(perchar)
            {
                case "0":
                    tmpnewchar="零" + tmpnewchar;
                    return document.write(tmpnewchar);
                    break;
                case "1":
                    tmpnewchar="壹" + tmpnewchar;
                    return tmpnewchar;
                case "2":
                    tmpnewchar="贰" + tmpnewchar;
                    return tmpnewchar;
            }
        }
    }
    --> 
    </script> 
    </head>
    <body>
     <div id="result"></div>
    <script language="javascript">
    document.getElementById('result').innerHTML = Arabia_to_Chinese(0);
    </script>
    </body>
    </html>
      

  4.   

    哈,没仔细看代码。。0的时候有document.write了。。仔细看了下代码。首先第11行,Mum应该是笔误,应该是Num其次Num是数字不是字符串,没有replace方法,要转换一下,Num = number+'',或者像楼上的number.toString()
      

  5.   

    写一个比较狂野的。(function(){
    var money = window.money = function (m) {
    this._orgMoney = m;
    }
    money.prototype = {
    //验证是否为合法的money
    checkInvalidMoney: function () {
    var m = this._orgMoney;
    if (m == null
    || m === undefined) {
    return false;
    }
    //parseFloat().toString();
    m = m.toString();
    m = m.replace(/[^\-\.\d]/g, "");
    return !isNaN(m);
    },
    //将money转换为标准的decimal数据
    toDecimal: function () {
    if (this.checkInvalidMoney()) {
        var m = this._orgMoney.toString();
    m = m.replace(/[^\-\.\d]/g, "");
    return parseFloat(m);
    }
    return 0;
    },
    //将money转换为人民币大写形式
    toUpperRMB: function () {
    var m = this.toDecimal();
    if (!this.checkInvalidMoney()) {
    return "";
    }
    m = m.toString();
    return toUpperRMB(m);
    }
    }; var DXSZ = "零壹贰叁肆伍陆柒捌玖",
    DXDW = "毫厘分角元拾佰仟萬拾佰仟亿拾佰仟萬兆拾佰仟萬亿京拾佰仟萬亿兆垓",
    SCDW = "元拾佰仟萬亿京兆垓"; //转换为人民币大写
    function toUpperRMB(money) {
        var result = "",//转化后的结果
    m = money,
    isNegative = /^\-/.test(m),//是否是负数
    isFloat = /\./.test(m);//是否是小数;
        m = m.replace(/^\-/, "");//去掉负号,将数据变为正数
        var arr = m.split('.');
    var integer = arr[0];//整数部分
    result = toUpperInteger(integer);
    if (isFloat) {
    result += toUpperFloat(arr[1], parseInt(integer) != 0 ? true : false);
    } else {
    if (result == "") {
    result = "零元";
    }
    result += "整";
    }
    if (isNegative) {
    result = "负" + result;
    }
    return result;
    }
    //将整数部分转为人民币大写
    function toUpperInteger(integer) {
    var v = integer,
    m = parseInt(v);
    if (m == 0) {
    return "";
    }
    var currCap = "",    //当前金额
    capResult = "",  //结果金额
    currentUnit = "",//当前单位
    resultUnit = "", //结果单位           
    prevChar = -1,      //上一位的值
    currChar = 0,       //当前位的值
    posIndex = 4;       //位置索引,从"元"开始
    for (var i = v.length - 1; i >= 0; i--) {
    currChar = parseInt(v.substr(i, 1));
    if (posIndex > 30)
    {
    //已超出最大精度"垓"。注:可以将30改成22,使之精确到兆亿就足够了
    break;
    }
    else if (currChar != 0) {
    currCap = DXSZ.substr(currChar, 1) + DXDW.substr(posIndex, 1);
    } else {
    //防止转换后出现多余的零,例如:3000020
    switch (posIndex) {
    case 4: currCap = "元"; break;
    case 8: currCap = "萬"; break;
    case 12: currCap = "亿"; break;
    case 17: currCap = "兆"; break;
    case 23: currCap = "京"; break;
    case 30: currCap = "垓"; break;
    default: break;
    }
    if (prevChar != 0) {
    if (currCap != "") {
        if (currCap != "元") {
            currCap += "零";
        }
    }
    else {
    currCap = "零";
    }
    }
    }
    //对结果进行容错处理               
    if (capResult.Length > 0) {
    resultUnit = capResult.substr(0, 1);
    currentUnit = DXDW.substr(posIndex, 1);
    if (SCDW.indexOf(resultUnit) > 0) {
    if (SCDW.indexOf(currentUnit) > SCDW.indexOf(resultUnit)) {
    capResult = capResult.substr(1);
    }
    }
    }
    capResult = currCap + capResult;
    prevChar = currChar;
    posIndex += 1;
    currCap = "";
    }
    return capResult;
    }
    //将小数部分转为人民币大写
    function toUpperFloat(value,addZero) {
    var v = value,
    m = parseInt(value);
    if (m == 0) {
    return "";
    }
    var currCap = "",
    capResult = "",
    prevChar = addZero ? -1 : 0,
    currChar = 0,
    posIndex = 3;
    for (var i = 0; i < v.length; i++) {
    currChar = parseInt(v.substr(i, 1));
    if (currChar != 0) {
    currCap = DXSZ.substr(currChar, 1) + DXDW.substr(posIndex, 1);
    } else {
    if (parseInt(v.substr(i)) == 0) {
    break;
    } else if (prevChar != 0) {
    currCap = "零";
    }
    }
    capResult += currCap;
    prevChar = currChar;
    posIndex -= 1;
    currCap = "";
    }
    return capResult;
    }})();var s = "-12,124.56";
    var m = new money(s);
    document.writeln(m.toUpperRMB());