从函数内的对象传递值

时间:2018-02-20 02:53:50

标签: javascript function object arguments parameter-passing

我一直在努力将“readData”中的“returnData.salary”值传递给 “calculateTax”函数中的对象,它假设取得工资值并计算州和联邦税。我很难过,我在互联网上找不到任何东西,这为我提供了一个很好的例子。这些例子是简单或超级复杂的方式。任何帮助将不胜感激。

如果我没有以正确的格式提交此问题,我会提前道歉。这是我第一次在stackoverflow上寻求帮助。

function readForm() {

        var returnData = {};
        returnData.name = $("#name").val();
        returnData.lastName = $("#lastName").val();
        returnData.age = $("#age").val();
        returnData.gender = $("[name=gender]:checked").val();
        returnData.salary = $("#salary").val();
        returnData.isManager = $("#isManager").val();
        returnData.myTextArea = $("#myTextArea").val();

        $("#name2").text(returnData.name);
        $("#lastName2").text(returnData.lastName);
        $("#age2").text(returnData.age);
        $("#gender2").text(returnData.gender);
        $("#salary2").text(returnData.salary);
        $("#myTextArea2").text(returnData.myTextArea);

        if ($(isManager).is(':checked')) {

            $("#isManager2").text("Yes");
        }
        else {
            $("#isManager2").text("No");
        }

        //$("#employeeForm")[0].reset();


    } //end of readForm function 

    function calculateTax() {

        console.log("Button Works");

    var calculateTax = {
        state: function(num) {
            num *= 0.09;
            return num;
        }
        , federal: function(num) {
            if (num > 10000) {
                num *= 0.2;
                return num;
            }
            else {
                num * 0.1;
                return num;
            }

        }
        , exempt: true
    };

    }

    //Invoke readForm function when the submit button is clicked.

    $(document).ready(function () {
        $("#btnSubmit").on("click", readForm);
        $("#btnCalculate").on("click", calculateTax);
    })

</script>

1 个答案:

答案 0 :(得分:1)

嗯,简单地说;你不能。反正不是这样的。或者,至少不要将值直接传递给函数。

您现在正在使用全局函数,它们不在类中。如果它在一个类中,你可以实例化该类并将其保存到this(这将是类&#39;实例)。但是,在这种情况下,我假设课程有点过于复杂。你可以做的是全局设置变量,所以所有函数都可以使用它们,就像这样;

//declare the global variable so it exists for every function     
var returnData = {};

function readForm() {

        //We do NOT redeclare the "var" again. It's global now.
        returnData = {}; //Reset the global variable when this function is called
        returnData.name = $("#name").val();
        returnData.lastName = $("#lastName").val();
        returnData.age = $("#age").val();
        returnData.gender = $("[name=gender]:checked").val();
        returnData.salary = $("#salary").val();
        returnData.isManager = $("#isManager").val();
        returnData.myTextArea = $("#myTextArea").val();

       //Rest of your function
}
function calculateTax(){
  console.log(returnData) //works here
}

请注意,您确实会覆盖全局变量,因此最好在每次函数调用时重置它们。你可能会把旧数据卡在那里,否则。