jquery从函数中获取全局值

时间:2011-07-08 13:12:17

标签: jquery xml ajax jquery-ui

您好我有一个问题,试图在jQuery,AJAX和jQuery UI中创建Amount计算器。但我有一个问题,我从滑块,选择框中获取所有importat值。我真的不知道怎么能把这个价值带到全球。我只在每个函数中获取值,但是当我想要从函数中获取此值时,变量中的该值不存在。

$(function() {
    //1st slider for get amount
    $("#amount").slider({
        range: "min",
        value: 0,
        min: 0,
        max: 10000,
        slide: function (e, ui) {
            $("#amount_show").val(ui.value);
            amount = ui.value;
            }
    });
    $("#amount_show").val($("#amount").slider("value"));

    //2nd slider for get values years
    $("#years").slider({
        range: "min",
        value:1,
        min:1,
        max:20,
        step:1,
        slide: function (e, ui) {
            $("#years_show").val(ui.value);
            years = ui.value;
            }
    });
    $("#years_show").val($("#years").slider("value"));

    //AJAX for loading values from xml
    $.get("irate.xml", function(xml) {
            $(xml).find('country').each(function() {

                var select = $('#country'),
                    id = $(this).attr('id'),
                    name = $(this).find('name').text(),
                    irate = $(this).find('irate').text(),
                    currency = $(this).find('currency').text();

                select.append("<option value='"+irate+"'>"+name+"</option>");
        });
    });

    //get irate value from dropbox
    $("#country").change(function() {
        var irate_select = "";
        $("#country option:selected").each(function () {
            irate_select += $(this).val() + " ";
            });
            irate = irate_select;
        });
});

我需要用金额,年数和愤怒来计算。

感谢您的建议。

4 个答案:

答案 0 :(得分:4)

在函数之外声明变量。

离。

var amount;

$(function...

答案 1 :(得分:1)

AndyL的答案应该是正确的。

如果声明需要在函数之外的另一个函数中使用的变量,然后在一个函数中设置它们的值,它们应该可以将这些值用于另一个函数。

// outside your function!!
var amount,
    years,
    irate;

// in your function somewhere!!
amount = someCalculation();
years = someOtherCalculation();

这些值将在每个其他函数中可用,因为它们被声明为全局命名空间的成员。

答案 2 :(得分:0)

尝试使用jquery的data()对象;

$(function(){
...

slide: function (e, ui) {
    $("#amount_show").val(ui.value);
    amount = ui.value;

    // Add to data() object here
    $('#amount').data('amount',amount);
}

// reference it elsewhere in your script like such:
console.log($('#amount').data('amount'));

答案 3 :(得分:0)

一个全局变量应该可以工作,但是,如果你改变某些东西的价值,你不应该改变你的“计算器”吗?

假装这是计算金额的html:

<input type="text" id="amount" style="border:0; color:#f6931f; font-weight:bold;" />

那么你需要在document.ready()中使用类似代码的东西:

//if the slider changes, then update the calculated value
$( "#years,#amount" ).bind( "slidechange", function(event, ui) {
  myCalculator();
});
// if the ?country? drop down changes, update the calculated value
$().change(function(event){
  myCalculator();
});

function myCalculator(){
  var years = $('#years').slider("value");
  var amount  = $('#amount').slider("value"); 
  var country = $('#country').val();
  $('#amount').val("something")
};