Javascript无法返回值

时间:2016-09-26 05:51:36

标签: javascript

我想从这些函数中获取值a,b,c并在总计中使用它们。我试图返回值,但它不起作用。当我创建全局变量时,total总是采用原始的全局变量而不是函数中的变量。

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

2 个答案:

答案 0 :(得分:3)

我认为应该是

WebSettings settings = webView.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setDomStorageEnabled(true);
    settings.setPluginState(WebSettings.PluginState.ON);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);


    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            Log.d("TAG", "onPermissionRequest");
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                request.grant(request.getResources());
            }
        }
    });

由于变量a,b和c是函数的局部变量,因此它们属于这些函数范围。但是,最大的问题是你根本不调用函数,所以即使使用全局变量你的a,b,c也是未定义的。

答案 1 :(得分: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);