2017-02-25 8 views
0

私はそれはそれはまた、整数に変換した後はNaNとして表示され、結果ブロックに閉鎖機能クロージャを使用した数学演算の計算...?

を使用して電卓の演算子である

を助けてあげてくださいユーザーの選択によって結果が表示されていません。

Mathamatical.js //閉鎖コンテンツ

var pradeep=(function(){ 
    result = 0; sum_is=sub_is=mul_is=divn_is=0; 
    function manupulation(x,y){ 
     sum_is = getsumValues(x,y); 
     sub_is = getsubValues(x,y); 
     mul_is = getmulValues(x,y); 
     divn_is = getdivnValues(x,y); 
     return result[sum_is,sub_is,mul_is,divn_is]; 
    } 
    function getsumValues(x,y){ 
     var sum_is = x+y; 
     return result[0]; 
    } 
    function getsubValues(x,y){ 
     var sub_is = x-y; 
     return sub_is; 
    } 
    function getmulValues(x,y){ 
     var mul_is = x*y; 
     return mul_is; 
    } 
    function getdivnValues(x,y){ 
     var divn_is = x/y; 
     return divn_is; 
    }return{ 
     manupulation_value : function(x,y){ 
      return manupulation(x,y); 
     } 
    } 
})(); 

私の第二のjsファイル

function calculate_operations(){ 
    var details = {} 
    details.Firstvalue = document.querySelector("#fnumber").value; 
    details.SecondValue = document.querySelector("#snumber").value; 
    details.Firstvalue = parseInt(details.Firstvalue); 
    details.SecondValue = parseInt(details.SecondValue); 
    details.result = 0; 
    //details.selectedOperation = document.querySelector("operation") 
    details.showdetails = function(){ 
     console.log(pradeep); 
     document.querySelector("#numberF").innerText = details.Firstvalue; 
     document.querySelector("#numberS").innerText = details.SecondValue; 
     function operationsMathematical(){ 
      if (document.querySelector("#operation".value == "")) { 
       document.querySelector("#sel_operation").innerText = +"No operation selected"; 
      } 
      if (document.querySelector("#operation").value== "add") { 
       document.querySelector("#sel_operation").innerHTML =+details.Firstvalue +"+" +details.SecondValue ; 
       details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
       //console.log(details.Firstvalue,details.SecondValue); 
       details.result=parseInt(pradeep.manupulation_value(result[0])); 
       document.querySelector("#result_block").innerHTML = +details.result; 

      } 
      if (document.querySelector("#operation").value== "sub") { 
       document.querySelector("#sel_operation").innerText =+details.Firstvalue +"-" +details.SecondValue; 
       details.result=pradeep.manupulation_value(result[1]); 
       document.querySelector("#result_block").innerHTML = +details.result; 
      } 
      if (document.querySelector("#operation").value== "mul") { 
       document.querySelector("#sel_operation").innerText =+details.Firstvalue +"*" +details.SecondValue; 
       details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
       details.result=parseInt(pradeep.manupulation_value(result[sum_is])); 
       document.querySelector("#result_block").innerHTML = +details.result; 
      } 
      if (document.querySelector("#operation").value== "divn") { 
       document.querySelector("#sel_operation").innerText =+details.Firstvalue +"/" +details.SecondValue; 
      } 
     } 
     operationsMathematical(); 
    } 
    //details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
    document.querySelector("#showvalues").style.display="block"; 
    details.showdetails(); 
} 
+2

'result result [sum_is、sub_is、mul_is、divn_is];は' result'が '0'であると考えていますか?実際に*実行するのは、 'undefined'を返します。おそらく 'return [sum_is、sub_is、mul_is、divn_is];'という結果を持つ配列を返すことを意味していました。あなたの 'getSumValues()'関数も同様の問題があります。 (問題はクロージャではありません...) – nnnnnn

+0

'getsumValues'では、' result = 0'(配列ではなく数字です)でも 'result [0]'を返しています –

+0

ありがとう.. .. Evenデータを返すときにsum_isが定義されていないというエラーが表示されています。 –

答えて

0

変更されたファイル。これがうまくいくはずです

var pradeep=(function(){ 
    // No need of these variables result = 0; sum_is=sub_is=mul_is=divn_is=0; 
    function manupulation(x,y){ 
     var sum_is = getsumValues(x,y); //use var otherwise global scope is used 
     var sub_is = getsubValues(x,y); 
     var mul_is = getmulValues(x,y); 
     var divn_is = getdivnValues(x,y); 
     return [sum_is,sub_is,mul_is,divn_is]; 
    } 
    function getsumValues(x,y){ 
     var sum_is = x+y; 
     return sum_is; 
    } 
    function getsubValues(x,y){ 
     var sub_is = x-y; 
     return sub_is; 
    } 
    function getmulValues(x,y){ 
     var mul_is = x*y; 
     return mul_is; 
    } 
    function getdivnValues(x,y){ 
     var divn_is = x/y; 
     return divn_is; 
    } 
    return{ 
     manupulation_value : function(x,y){ 
      return manupulation(x,y); 
     } 
    } 
})(); 

2番目のファイルにエラーがあります。

function calculate_operations(){ 
     var details = {} 
     details.Firstvalue = document.querySelector("#fnumber").value; 
     details.SecondValue = document.querySelector("#snumber").value; 
     details.Firstvalue = parseInt(details.Firstvalue); 
     details.SecondValue = parseInt(details.SecondValue); 
     details.result = 0; 
     //details.selectedOperation = document.querySelector("operation") 
     details.showdetails = function(){ 
      console.log(pradeep); 
      document.querySelector("#numberF").innerText = details.Firstvalue; 
      document.querySelector("#numberS").innerText = details.SecondValue; 
      function operationsMathematical(){ 
       if (document.querySelector("#operation".value == "")) { 
        document.querySelector("#sel_operation").innerText = +"No operation selected"; 
       } 
       if (document.querySelector("#operation").value== "add") { 
        document.querySelector("#sel_operation").innerHTML =+details.Firstvalue +"+" +details.SecondValue ; 
        details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
        //console.log(details.Firstvalue,details.SecondValue); 
        details.result=parseInt(pradeep.manupulation_value(result[0])); 
        document.querySelector("#result_block").innerHTML = +details.result; 

       } 
       if (document.querySelector("#operation").value== "sub") { 
        document.querySelector("#sel_operation").innerText =+details.Firstvalue +"-" +details.SecondValue; 
        details.result=pradeep.manupulation_value(result[1]); 
        document.querySelector("#result_block").innerHTML = +details.result; 
       } 
       if (document.querySelector("#operation").value== "mul") { 
        document.querySelector("#sel_operation").innerText =+details.Firstvalue +"*" +details.SecondValue; 
        details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
        details.result=parseInt(pradeep.manupulation_value(result[2])); 
        document.querySelector("#result_block").innerHTML = +details.result; 
       } 
       if (document.querySelector("#operation").value== "divn") { 
        document.querySelector("#sel_operation").innerText =+details.Firstvalue +"/" +details.SecondValue; 
details.result=pradeep.manupulation_value(result[3]); 
       document.querySelector("#result_block").innerHTML = +details.result; 
       } 
      } 
      operationsMathematical(); 
     } 
     //details.result= pradeep.manupulation_value(details.Firstvalue,details.SecondValue); 
     document.querySelector("#showvalues").style.display="block"; 
     details.showdetails(); 
    } 
+0

それでも動作しません。 sum_isが定義されていないエラーを表示する –