无法获取表单总成本

Can't get form total cost

本文关键字:总成本 表单 获取      更新时间:2023-09-26

所以我有一个有两个下拉列表的表单。第一个下拉列表是选项,另一个是更多选项。所以这就像混合搭配,现在我想从两个选定的下拉列表中计算总数。这就是我要做的

var repairCost = new Array();
    repairCost["none_repair"] = 0;
    repairCost["minor"] = 10;
    repairCost["major"] = 20;
    repairCost["extreme"] = 30;
    var colorCost = new Array();
    colorCost["none_color"] = 0;
    colorCost["single_portrait"] = 10;
    colorCost["group_scene"] = 20;
    $("#repair_drop").change(function (event) {
        getRepair();
        function getRepair(){
            var repair = 0;
            var form = document.forms["myform"];
            var selectedRepair = form.elements["repair_drop"];
            repair = repairCost[selectedRepair.value];
            return repair
        }
    });
    $("#colorize_drop").change(function (event) {
    getColor();
    function getColor(){
            var color = 0;
            var form = document.forms["myform"];
            var selectedColor = form.elements["colorize_drop"];
            color = colorCost[selectedColor.value];
            return color
        }
    });
    var timer1 = null;
    clearTimeout(timer1); 
    timer1 = setTimeout(total, 500)
    function total(){
        var cost = getRepair() + getColor();
        console.log(cost);
    }
    total();

我最终得到了

捕获的引用错误:未定义 getRepair

例如,我会选择repairCost["minor"]colorCost["group_scene"],那么我的结果将是$30。我在那里有一个计时器,所以它会自动计算总数。有什么想法吗?

您在另一个函数中定义了getRepair函数。因此,您无法从外部访问它。您必须在函数外部定义它才能访问它,如下所示:

var repairCost = new Array();
repairCost["none_repair"] = 0;
repairCost["minor"] = 10;
repairCost["major"] = 20;
repairCost["extreme"] = 30;
var colorCost = new Array();
colorCost["none_color"] = 0;
colorCost["single_portrait"] = 10;
colorCost["group_scene"] = 20;
function getRepair(){
    var repair = 0;
    var form = document.forms["myform"];
    var selectedRepair = form.elements["repair_drop"];
    repair = repairCost[selectedRepair.value];
    return repair;
}
function getColor(){
    var color = 0;
    var form = document.forms["myform"];
    var selectedColor = form.elements["colorize_drop"];
    color = colorCost[selectedColor.value];
    return color;
}
$("#repair_drop").change(function (event) {
    getRepair();
});
$("#colorize_drop").change(function (event) {
    getColor();
});
var timer1 = null;
clearTimeout(timer1); 
timer1 = setTimeout(total, 500)
function total(){
    var cost = getRepair() + getColor();
    console.log(cost);
}

为什么要在事件中声明函数,然后从那里调用它们?要么在事件外部声明它们,要么只是内联代码 - 不要同时执行这两项操作。