繁体   English   中英

使用javascript将数字转换为字符串

[英]convert number to string using javascript

下面的代码将数字转换为单词。 但是问题是,如果输入值具有某个值示例1。它仍然显示“此处打印数字”。 改变其不断变化的价值。 如果默认情况下具有价值,则以word格式显示。

<script type="text/javascript">
    var th = ['', ' thousand', ' million', ' billion', ' trillion', ' quadrillion', ' quintillion'];
    var dg = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
    var tn = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
    var tw = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];

    function update(){
        var numString =   document.getElementById('number').value;
        if (numString == '0') {
            document.getElementById('container').innerHTML = 'Zero';
            return;
        }
        if (numString == 0) {
            document.getElementById('container').innerHTML = 'messeg tell to enter numbers';
            return;
        }

        var output = toWords(numString);
        //print the output
        document.getElementById('container').innerHTML = output;
    }

    function toWords(s) {
        s = s.toString();
        s = s.replace(/[\, ]/g, '');
        if (s != parseFloat(s)) return 'not a number';
        var x = s.indexOf('.');
        if (x == -1) x = s.length;
        if (x > 15) return 'too big';
        var n = s.split('');
        var str = '';
        var sk = 0;
        for (var i = 0; i < x; i++) {
            if ((x - i) % 3 == 2) {
                if (n[i] == '1') {
                    str += tn[Number(n[i + 1])] + ' ';
                    i++;
                    sk = 1;
                } else if (n[i] != 0) {
                    str += tw[n[i] - 2] + ' ';
                    sk = 1;
                }
            } else if (n[i] != 0) {
                str += dg[n[i]] + ' ';
                if ((x - i) % 3 == 0) str += 'hundred ';
                sk = 1;
            }
            if ((x - i) % 3 == 1) {
                if (sk) str += th[(x - i - 1) / 3] + ' ';
                sk = 0;
            }
        }
        if (x != s.length) {
            var y = s.length;
            str += 'point ';
            for (var i = x + 1; i < y; i++) str += dg[n[i]] + ' ';
        }
        return str.replace(/\s+/g, ' ');
    }
    </script>

    <input name="data[Customer][customer_budget_from]" class="form-control col-md-7 col-xs-12" placeholder="From" required="required" autocomplete="off" maxlength="255" id="number" size="70" onkeyup="update();" onkeydown="return (event.ctrlKey || event.altKey 
                        || (47<event.keyCode &amp;&amp; event.keyCode<58 &amp;&amp; event.shiftKey==false) 
                        || (95<event.keyCode &amp;&amp; event.keyCode<106)
                        || (event.keyCode==8) || (event.keyCode==9) 
                        || (event.keyCode>34 &amp;&amp; event.keyCode<40) 
                        || (event.keyCode==46) )" type="text" value="1">
    <div id="container">Here The Numbers Printed</div>

首先:

 var numString =   document.getElementById('number').value;

 typeof numString //string

因此numString == '0'numString == 0是相同的。

您应该使用'numString === '0'numString === 0代替

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM