2016-07-25 8 views
0

私はグレゴリオ暦にジャラリを変換するために、下のリンクを使用:私は、文字列として、ユーザーからのデータを受信parseIntを使用すると、結果はNaNになります。なぜですか?

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になります。私は手動でこのコードのように私の変数に文字列を設定し :

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); 

すべてが正常に動作し、なぜですか?

+0

xx、nn、mmmで '' 'console.log'''を実行するとどうなりますか? –

+0

私がチェックしたところ、このコードは機能しています。私はどこに問題があるのか​​わかりません。アラートを試みる(jjj + '' + yyyt + '' + kik);番号の結果を取得します... not NaN –

+0

変数を検査する適切なツールは[console](https://getfirebug.com/wiki/index.php/Console_API)です。古い古い[alert()](https://developer.mozilla.org/en-US/docs/Web/API/Window/alert)は、すべての文字列をキャストして関連情報を隠します。変数の内容がわからないので、コードに何が問題なのかを言うことは不可能です。 –

答えて

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> 
0

Thisあなたの質問にお答えします。最初の文字または一部の文字を数値に変換できないようです。それが問題の原因です。

0

I GOT IT !! 問題は、フォームユーザーを取得する文字列がペルシア語/アラビア語であることでした。私は英語の文字列番号に変更する必要があります。私はこの問題を解決するために、このコードを使用:

function parseArabic(str) { 
     return Number(str.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function(d) { 
      return d.charCodeAt(0) - 1632; 
     }).replace(/[۰۱۲۳۴۵۶۷۸۹]/g, function(d) { 
      return d.charCodeAt(0) - 1776; 
     })); 
    } 

あなたは私を伝えるために別のカスタマイズコードを持っている場合、私は感謝だろう。 ありがとうございます。

関連する問題