如何在对象文字中使用来自另一个JS函数的返回值

时间:2014-04-16 14:55:27

标签: javascript return-value

我有一系列的两种方法,其中第二种方法必须使用第一种方法的返回值。因此,在我的代码中,如下所示,totalRoute需要从totalInvoicedvalue3)返回的值来计算其值,然后该值将显示在我正在构建的寄存器中。 totalRoute将等于totalInvoiced减去notCollectednotCollectedLateexpenditure1expenditure2的总和。

我的问题是,当我插入notCollectednotCollectedLateexpenditure1expenditure2的值时,totalRoute的值为NaN 。我想那是因为我没有使用totalInvoiced correctley的返回值,或者没有正确传递值。为什么我的函数没有获取或使用totalInvoiced的值?

My fiddle here

我的JS代码:

var A = {
    today: document.getElementById("today"),

    displayDate: function () {
        var cD = new Date();
        var day = cD.getDate();
        var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"];
        var year = cD.getFullYear();
        var today1 = A.today;

        today1.innerHTML = (day + "/" + months[cD.getMonth()] + "/" + year);
    },

    invoiced: document.getElementById("invoiced"),

    lastInvoiced: document.getElementById("lastinvoiced"),

    totalInvoiced: function () {

        var value1 = parseFloat(A.invoiced.value);

        var value2 = parseFloat(A.lastInvoiced.value);

        if (isNaN(value1))
            value1 = 0;
        if (isNaN(value2))
            value2 = 0;

        var totalInvoiced1 = value1 + value2;
        var value3 = document.getElementById("daytotal").value = totalInvoiced1 + "€";
        console.log(value3);
        return value3;
    },

    notCollected: document.getElementById("notcollected"),

    notCollectedLate: document.getElementById("notcollectedlate"),

    expenditure1: document.getElementById("expenditure1"),

    expenditure2: document.getElementById("expenditure2"),

    totalRoute: function () {
        var value4 = parseFloat(A.notCollected.value);
        var value5 = parseFloat(A.notCollectedLate.value);
        var value6 = parseFloat(A.expenditure1.value);
        var value7 = parseFloat(A.expenditure2.value);

        if (isNaN(value4))
            value4 = 0;
        if (isNaN(value5))
            value5 = 0;
        if (isNaN(value6))
            value6 = 0;
        if (isNaN(value7))
            value7 = 0;

        var totalExp = (value4 + value5 + value6 + value7);
        var value3 = A.totalInvoiced();
        var tRoute = value3 - totalExp;
        var value8 = document.getElementById("total").value = tRoute + "€";

        console.log(value8);
        return value8;
    }


};
window.onload = A.totalInvoiced();
window.onload = A.displayDate();

A.invoiced.addEventListener("change", A.totalInvoiced, false);
A.lastInvoiced.addEventListener("change", A.totalInvoiced, false);

A.notCollected.addEventListener("change", A.totalRoute, false);
A.notCollectedLate.addEventListener("change", A.totalRoute, false);
A.expenditure1.addEventListener("change", A.totalRoute, false);
A.expenditure2.addEventListener("change", A.totalRoute, false);

1 个答案:

答案 0 :(得分:3)

totalInvoiced中返回的

value3包含欧元字符。只需将totalInvoiced的回报更改为totalInvoiced1而不是value3,即可获得我认为您正在寻找的功能。