当我使用parseInt时,结果是NaN,为什么?

时间:2016-07-25 08:18:12

标签: javascript casting parseint

我使用下面的链接将Jalali转换为Gregorian:

https://github.com/Mds92/MD.BootstrapPersianDateTimePicker/tree/master/MD.BootstrapPersianDateTimePicker/Scripts

我从用户那里收到数据作为字符串。 这是我使用的代码:

<script>
    var jj = document.getElementById("fromDate1"),
            bb = document.getElementById("showMe"),
            splitOb, yy, mm, dd;

    bb.onclick = function () {
        splitOb = jj.value.split("/");
        for (var i = 0; i < splitOb.length; i++) {
            yy = splitOb[0];
            mm = splitOb[1];
            dd = splitOb[2];
        }

        var xx = yy.trim().toString(), nn = mm.trim().toString(), mmm = dd.trim().toString();

        var xxx = parseInt(xx, 10);
        var nnn = parseInt(nn, 10);
        var mjj = parseInt(mmm, 10);
        var hello = toGregorian(xxx, nnn, mjj);
        alert(hello.gy + "/" + hello.gm + "/" + hello.gd);

        /* var gh= "1395";
         var ghh = parseInt(gh);
         alert(ghh);*/
    };
</script>

我在我的代码中使用了parseInt,不幸的是结果是Nan,我检查了我的变量,所有这些都是字符串。但是当我将它们从字符串转换为整数时,结果也是NaN。 当我像这段代码手动设置字符串到我的变量时:

var jjj = "1395";
        var yyyt = "05";
        var kik = "04";

        var xxx = parseInt(jjj, 10);
        var nnn = parseInt(yyyt, 10);
        var mjj = parseInt(kik, 10);

        var hello = toGregorian(xxx, nnn, mjj);
        alert(hello.gy + "/" + hello.gm + "/" + hello.gd);

一切正常,为什么?

3 个答案:

答案 0 :(得分:1)

NaN表示不是数字。也许你可以消除toString()部分。

<script>
    var jj = document.getElementById("fromDate1"),
            bb = document.getElementById("showMe"),
            splitOb, yy, mm, dd;

    bb.onclick = function () {
        splitOb = jj.value.split("/");
        for (var i = 0; i < splitOb.length; i++) {
            yy = splitOb[0];
            mm = splitOb[1];
            dd = splitOb[2];
        }

        var xxx = parseInt(yy, 10);
        var nnn = parseInt(mm, 10);
        var mjj = parseInt(dd, 10);
        var hello = toGregorian(xxx, nnn, mjj);
        alert(hello.gy + "/" + hello.gm + "/" + hello.gd);

        /* var gh= "1395";
         var ghh = parseInt(gh);
         alert(ghh);*/
    };
</script>

答案 1 :(得分:0)

This可以帮助回答您的问题。似乎它无法将第一个字符或某些字符转换为数值。导致问题的原因。

答案 2 :(得分:0)

我知道了!! 问题是我从用户那里获得的字符串是波斯语/阿拉伯语。我应该把它改成英文字符串数字。我使用此代码来解决问题:

$this->db = $this->load->database('db2',true);

如果您有其他自定义代码告诉我,我将不胜感激。 谢谢你的考虑。