使用window.onload中的函数更改全局变量值

时间:2016-12-25 01:00:05

标签: javascript jquery function switch-statement onload

我正在建造一个计算器。为什么addToStr函数无法更改全局变量的值? (我只采样了一些switch语句,以缩短代码。)

window.onload = function () {

$(".buttons").click(function () {
    var id = $(this).attr("id");

    switch (id) {
        case "b-7":
            value = "7";
            console.log(value);
            addToStr(miniDisplayString, value);
            addToStr(numberString, value);
            break;
        case "b-8":
            value = "8";
            addToStr(miniDisplayString, value);
            addToStr(numberString, value);
            break;
        case "b-9":
            value = "9";
            addToStr(miniDisplayString, value);
            addToStr(numberString, value);
            break;
        case "b-divide":
            value = " / ";
            addToStr(miniDisplayString, value);
            break;
    }

    console.log("total = " + total);
    console.log("miniDisplayString = " + miniDisplayString);
    console.log("numberString = " + numberString);
});
}


var total = 0;
var value;
var miniDisplayString = "";
var numberString = "";


function addToStr(tot, val) {
     tot += val;
}

1 个答案:

答案 0 :(得分:0)

您无法通过javascript中的引用传递值,它认为您只是尝试使用变量' 。为此,您需要使用指针,其中不可用,使用javascript等语言。为了通过使用当前方法实现此目的,您需要为每个引用创建全局变量,并且每次使用不同的函数设置它们。 (每个变量需要一个单独的函数,并且只将' value'作为参数;并将变量设置为传递给函数的相应值" addTo< varName>& #39)。但是,这种方法似乎是不必要的,而且效率很高。只需在代码中手动设置它们,根本不会受到伤害;像这样:

testStr += val; // This should not be nested inside a function like addToStr.

...而不是为每个引用使用单独的函数,这实际上根本不需要,不是在你的情况下,也不是一般的。 您也可以在函数中返回新值并使用它,但是再次;没有必要。