2016-09-26 12 views
-1

これらの関数から値a、b、cを取得し、それらを合計で使用したいと考えています。値を返そうとしましたが、機能しません。グローバル変数を作成するとき、totalは常に関数のものではなくオリジナルのグローバル変数をとります。JavaScriptは値を返すことができません

function d1() { 
    var a = document.getElementById("s1").value; 
    document.getElementById("d1").innerHTML = (2 * a).toFixed(2); 
    return a; 
} 

function d2() { 
    var b = document.getElementById("s2").value; 
    document.getElementById("d2").innerHTML = (3 * b).toFixed(2); 
    return b; 
} 

function d3() { 
    var c = document.getElementById("s3").value; 
    document.getElementById("d3").innerHTML = (4 * c).toFixed(2); 
    return c; 
} 

var total = a + b + c; 
document.getElementById("total").innerHTML = total.toFixed(2); 
+0

変数の値は決して操作されません。 – Rayon

+0

a、bおよびcは関数の外部では表示されません。 –

+0

あなたは 'var total = d1()+ d2()+ d3()' –

答えて

3

私は、変数a、b、cは関数に対してローカルであり、彼らはそれらの関数のスコープに落ちるので、それは

var total = d1() + d2() + d3(); 

されるべきだと思います。しかし、最大の問題は、関数をまったく呼び出さないということです。したがって、グローバル変数を使用する場合でも、a、b、cは未定義です。

1

a、bおよびcは、それぞれd1、d2およびd3内の局所変数である。だからあなたがしようとしたように、あなたはそのスコープの外で直接使うことはできません。

希望する結果を達成するには複数の方法があります。最も簡単なのは

function d1() { 
      var a = document.getElementById("s1").value; 
      document.getElementById("d1").innerHTML = (2*a).toFixed(2); 
      return a; 
      } 

      function d2() { 
      var b = document.getElementById("s2").value; 
      document.getElementById("d2").innerHTML = (3*b).toFixed(2); 
      return b; 
      } 

      function d3() {     
      var c = document.getElementById("s3").value; 
      document.getElementById("d3").innerHTML = (4*c).toFixed(2); 
      return c; 
      } 

      **var total = d1() + d2() + d3();** 
      document.getElementById("total").innerHTML = total.toFixed(2); 
関連する問題