当我使用parseInt的结果是NaN,为什么?
问题描述:
我用下面的转换贾拉利链接公历:当我使用parseInt的结果是NaN,为什么?
我来自用户的字符串接收数据。 这是我使用的代码:我检查我的变量
<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。 当我设置串到我的变量手动这样的代码:
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);
一切正常,为什么?
答
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>
答
我知道了! 问题是,我得到的用户字符串是波斯语/阿拉伯语。我应该将其更改为英文字符串数字。我使用此代码来解决问题:
function parseArabic(str) {
return Number(str.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function(d) {
return d.charCodeAt(0) - 1632;
}).replace(/[۰۱۲۳۴۵۶۷۸۹]/g, function(d) {
return d.charCodeAt(0) - 1776;
}));
}
如果您有另一个自定义代码告诉我,我将不胜感激。 感谢您的考虑。
如果在xx,nn和mmm上执行'''console.log'',会发生什么? –
我刚查过,这段代码正在工作。我不知道你有什么问题。试试alert(jjj +''+ yyyt +''+ kik);你会得到数字结果...不是NaN –
检查变量的适当工具是[控制台](https://getfirebug.com/wiki/index.php/Console_API)。好的[alert()](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert)将所有内容都转换为字符串,从而隐藏了相关信息。因为我们不知道任何变量的内容,所以不可能说出你的代码有什么问题。 –