2016-09-26 3 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

Я думаю, что это должно быть

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