2009-06-09 7 views
-1

たとえば、4は「4」に変換され、33333は「30,300,330」に変換されます。私は、JAVASCRIPTの代わりにJQUERYを使用することを考えています。ここで私は、テキストに相当する数字を入力して変換するJavascriptコードを持っています

は、全体のコードです:

<script language="javascript" type="text/javascript"> 

    function NumberToTextConverter() 
    { 
     this.TEN = 10; 
     this.HUNDRED = 100; 
     this.THOUSAND = 1000; 
     this.MILLION = 1000000; 
     this.BILLION = 1000000000; 
     this.wordList = new Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "TEN", "ELEVEN", "Twelve", "Thirteen", "Fourteen", "fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"); 
     this.wordList2 = []; 
     this.initializeTwentys(); // this would populate the twentys 

    } 

    NumberToTextConverter.Convert = function(number) 
    { 
     var currentConverter = new NumberToTextConverter(); 
     return currentConverter.Convert(number); 
    }; 

    NumberToTextConverter.prototype.Convert = function(number) 
    { 
     var quotient = Math.floor(number/this.BILLION); 
     var remainder = number % this.BILLION; 
     var word = ""; 
     var realValue = ""; 
     var converter = this; 
     if (number < this.BILLION) 
     { 
      return converter.ConvertToMillions(number); 
     } 
     else 
     { 
      var quotientValue = quotient.toString(); 
      if (quotientValue.length == 3) 
      { 
       realValue = realValue + converter.ConvertHundreds(quotient) + " billions "; 
      } 
      else if (quotientValue.length == 2) 
      { 
       realValue = realValue + converter.ConvertToDoubleDigit(quotient) + " billions "; 
      } 
      else 
      { 
       realValue = realValue + this.wordList[quotient] + " billions "; 
      } 
      realValue = realValue + converter.ConvertToMillions(remainder); 
     } 
     return realValue; 
    }; 
    NumberToTextConverter.prototype.ConvertToMillions = function(number) 
    { 
     var quotient = Math.floor(number/this.MILLION); 
     var remainder = number % this.MILLION; 
     var word = ""; 
     var realValue = ""; 
     var converter = this; 
     if (number < this.MILLION) 
     { 
      return converter.ConverToThousands(number); 
     } 
     else 
     { 
      var quotientValue = quotient.toString(); 
      if (quotientValue.length == 3) 
      { 
       realValue = realValue + converter.ConvertHundreds(quotient) + " millions "; 
      } 
      else if (quotientValue.length == 2) 
      { 
       realValue = realValue + converter.ConvertToDoubleDigit(quotient) + " millions "; 
      } 
      else 
      { 
       realValue = realValue + this.wordList[quotient] + " millions "; 
      } 
      realValue = realValue + converter.ConverToThousands(remainder); 
     } 
     return realValue; 
    }; 
    NumberToTextConverter.prototype.ConverToThousands = function(number) 
    { 
     var quotient = Math.floor(number/this.THOUSAND); 
     var remainder = number % this.THOUSAND; 
     var word = ""; 
     var realValue = ""; 
     var converter = this; 
     if (number < this.THOUSAND) 
     { 
      return converter.ConvertHundreds(number); 
     } 
     else 
     { 
      var quotientValue = quotient.toString(); 
      if (quotientValue.length == 3) 
      { 
       realValue = realValue + converter.ConvertHundreds(quotient) + " thousands "; 
      } 
      else if (quotientValue.length == 2) 
      { 
       realValue = realValue + converter.ConvertToDoubleDigit(quotient) + " thousands "; 
      } 
      else 
      { 
       realValue = realValue + this.wordList[quotient] + " thousands "; 
      } 
      realValue = realValue + converter.ConvertHundreds(remainder); 
     } 
     return realValue; 
    }; 

    NumberToTextConverter.prototype.ConvertHundreds = function(number) 
    { 
     var quotient = Math.floor(number/this.HUNDRED); 
     var remainder = number % this.HUNDRED; 
     var word = ""; 
     var converter = this; 
     if (number >= 100) 
     { 
      return this.wordList[quotient] + " hundred " + converter.ConvertToDoubleDigit(remainder); 
     } 
     else 
     { 
     return converter.ConvertToDoubleDigit(remainder); 
     } 
    }; 
    NumberToTextConverter.prototype.initializeTwentys = function() 
    { 
     this.wordList2[0] = ""; 
     this.wordList2[1] = "TEN"; 
     this.wordList2[2] = "TWENTY"; 
     this.wordList2[3] = "THIRTY"; 
     this.wordList2[4] = "FOURTY"; 
     this.wordList2[5] = "FIFTY"; 
     this.wordList2[6] = "Sixty"; 
     this.wordList2[7] = "Seventy"; 
     this.wordList2[8] = "Eighty"; 
     this.wordList2[9] = "Ninety"; 
    }; 
    NumberToTextConverter.prototype.ConvertSingleDigit = function(number) 
    { 
     return this.wordList[number]; 
    }; 
    NumberToTextConverter.prototype.ConvertToDoubleDigit = function(number) 
    { 
     var quotient = Math.floor(number/this.TEN); 
     var remainder = number % this.TEN; 
     var word = ""; 
     if (number > 19) 
     { 
      switch (quotient) 
      { 
       case 2: word = this.wordList2[2]; break; 
       case 3: word = this.wordList2[3]; break; 
       case 4: word = this.wordList2[4]; break; 
       case 5: word = this.wordList2[5]; break; 
       case 6: word = this.wordList2[6]; break; 
       case 7: word = this.wordList2[7]; break; 
       case 8: word = this.wordList2[8]; break; 
       case 9: word = this.wordList2[9]; break; 
      } 
      return word + " " + this.wordList[remainder]; 
     } 
     else 
     { 
      return this.wordList[number]; 
     } 
    }; 

    function PleaseConvert() 
    { 

     var value = document.getElementById("txtNumberInput").value; 
     var checkValue = NumberToTextConverter.Convert(parseInt(value)); 

     var currentSpanTag = document.getElementById("spanText"); 
     currentSpanTag.style.backgroundColor = '#aadd88'; 
     currentSpanTag.style.border = 'dotted 1px #333377'; 
     currentSpanTag.innerHTML = checkValue; 
    } 

あなたの意見やアイデアが高く評価されています!私の質問は、JQUERYを使用してこのロジックを実装することによって時間を費やすことが良い考えかどうかです。ここでは、作業コードは次のとおりです。 http://www.coolaspdotnetcode.com/Web/JavaScriptInfoAndCode.aspx

+3

あなたの質問は...ですか? –

+0

だから、あなたはこれをjQueryスクリプトとしてリファクタリングしたいと思っています。どのように思慮深い; P – karim79

+1

よくある質問から:http://stackoverflow.com/faq:「自分のプログラミングの質問に尋ねたり答えたりするのはまったくいいですが、質問の形のフレーズです。 – artlung

答えて

9

「jQueryコードに変換する」という正確な意味は? jQueryはあなたが投稿したコードとはまったく関係ありません。それは別の言語ではありません、それはJavascriptを異なるものにする魔法はありません。 jQueryは、DOM要素を操作しやすく、共通のJavascriptタスクをブラウザ間で実行するためのライブラリです。それは Javascriptであり、実際にはこのような機能を持つ場所にはどこもありません。何が本当に意味することは、「このうちのプラグインを作成する」である場合

が、それは5ライナーです:

$.fn.humanizeNumber = function() { 
    return this.each(function() { 
     $(this).html(CALLTHEFUNCTION($(this).html())); 
    } 
}); 

CALLTHEFUNCTIONは、あなたが上記の投稿のコードの主な機能は何である(私は「ドン本当に気をつけて、それが何であるかを見つけること)。そのプラグインは、あなたがこれをやらせるだろう。

$('#myelement').humanizeNumber(); 

何でもあなたの関数の戻りに「123」から#myelementに値を変換します。

+4

@Paolo - +1、私は彼がそれをプラグインにすることを意味するとは思わないが、鮮やかな示唆はそれにもかかわらず - 華麗な暴言。あなたは真剣にそれを取った、他の人(自分自身を含む)はできなかった。名声。 – karim79

1

私はこのためのより良い場所がhttp://refactormycode.com/

StackOverflowのことだと思うことは議論のためのより直接的な質問と回答に向け、かつ少ないです。

3

これがすでにこのように行われていて、動作しているのであれば、なぜこれをjQueryで実装するのに時間を費やすのか分かりません。

jQueryを習得して練習したい場合以外は、

+0

はい、それは働いていますが、私はちょうどJQUERYがより堅牢か、より良いリファクタリングされたコードを作ることによってどのように容易になるのだろうと思っています。 – Shiva

+0

私はあなたのコードを見直さなかったので、どれくらい頑強であるかはわかりませんが、jQueryはJavaScriptライブラリです。堅牢なJavascriptコードを作成することができます。次のjavascriptを使用すると、jqueryを使用できます。新しいlibがリリースされるたびにすべてのjavascriptを変更すると想像してください。 –

+0

+1この行に「新しいlibがリリースされるたびにすべてのjavascriptを変更すると想像してください。 – Shiva

2

コードが動作する場合は、で、リファクタリングしないでください。どうして?私たちはここに地球上で時間がないからです。

+0

それは本当に良いコメントです。私はそれが好き!!!! – Shiva

+0

@ Shiva - 私はそれを「コメント」と呼んでいることに違反します。それは答えです、ダニット:P – karim79

関連する問題