首页 > 解决方案 > 将值作为 js 字典返回,某些值未定义?

问题描述

我试图从 JS 函数返回多个变量,所以我将需要返回的变量放在字典中,但是当我稍后调用它们时它们不存在?

function event_listeners(){
        // Event Listners
    $("#add_calculation_button").on('click', function()
    {
        save_calculation();
    });

    $("#owned_acres").on('input',function() 
    {
        $("#result_acres_numerator").text( $(this).val());
        calculate_NRI();
    });

    $("#total_acres").on('input',function() 
    {
        $("#result_acres_denominator").text( $(this).val());
        calculate_NRI();
    });

    $("#cross_unit_factor").on('change',function() 
    {
        if(typeof(was_previously_invalid) == "undefined")
        {
            was_previously_invalid = false
        }
        if(was_previously_invalid == false)
        {
            $(this).removeClass("is-invalid");
        }
        $("#result_cross_unit").text(display($(this).val()));
        cross_unit = convert($(this).val())
        was_previously_invalid = false
        calculate_NRI();
    });

    $("#ownership_factor").on('change',function() 
    {
        if(typeof(was_previously_invalid) == "undefined")
        {
            was_previously_invalid = false
        }
        if(was_previously_invalid == false)
        {
            $(this).removeClass("is-invalid");
        }
         $("#result_ownership").text(display($(this).val()));
        ownership = convert($(this).val())
        was_previously_invalid = false
        calculate_NRI();
    });

    $("#royalty_rate").on('change',function() 
    {
        if(typeof(was_previously_invalid) == "undefined")
        {
            was_previously_invalid = false
        }

        if(was_previously_invalid == false)
        {
            $(this).removeClass("is-invalid");
        }
        $("#result_royalty_rate").text(display($(this).val()));
        royalty = convert($(this).val())
        console.log(royalty)
        was_previously_invalid = false
        calculate_NRI();
    });

    $("#decimal").on('change',function() {});
    $("#percentage").on('change',function() {});
    $("#cross_unit_yes").on('change',function() 
    {
        $("#cross_unit_entry_box").show();
        $("#cross_unit_results_box").show();
        calculate_NRI();                
    });
    $("#cross_unit_no").on('change',function() 
    {
        $("#cross_unit_entry_box").hide();
        $("#cross_unit_results_box").hide();
        $("#result_cross_unit").text(1);
        $("#cross_unit_factor").val(1);
        calculate_NRI();
    });
    $("#show_total_yes").on('change',function()
    {
        $("#total_history_box").show();
        $("#total_history_box").addClass("d-flex");
    });
    $("#show_total_no").on('change',function() 
    {
        $("#total_history_box").hide();
        $("#total_history_box").removeClass("d-flex");
    });

    $("#divide_out_yes").on('change',function() {alert("Yes!");});
    $("#divide_out_no").on('change',function() {alert("No!");});
    $("#brp_royalty_rate").on('change',function() {alert("BRP Royalty Rate");});
    $("#coval_royalty_rate").on('change',function() {alert("Coval Royalty Rate");});

    var dictionary_of_converted_nums = {
                                            Royalty: royalty,
                                            Cross_Unit: cross_unit,
                                            Ownership: ownership,
                                        };

    return dictionary_of_converted_nums;
}

然后当我尝试调用每个单独的返回变量时

listeners = event_listeners();
try
    {
        cross_unit_factor = parseFloat(listeners.Cross_Unit).text();
    }
    catch(err)
    {
        cross_unit_factor = 1;
    }

结果应该让 cross_unit_factor 成为 return 语句中的 Cross_Unit 变量。但由于捕获错误,我得到的只是 1

标签: javascriptjquery

解决方案


推荐阅读