JavaScript - 从不同的函数访问不同的变量

时间:2012-09-07 06:10:19

标签: javascript jquery function variables select

我有三个不同的选择框供用户选择。我需要一次访问所有三个选项的值,但无法弄清楚如何做到这一点。让我用一个例子来解释我的意思:

<select id="hue">
// Options
</select>

<select id="sat">
// Options
</select>

<select id="lig">
// Options
</select>

现在,要访问每个选择框的选择,我使用以下代码:

$('#hue').filter(':selected').val().change(function(){
    hueVal = $(this).val();
    return hueVal;
})

$('#sat').filter(':selected').val().change(function(){
    satVal = $(this).val();
    return satVal;
})

$('#lig').filter(':selected').val().change(function(){
    ligVal = $(this).val();
    return ligVal;
})

现在,我想要做的是在新的jquery调用中同时访问三个返回值(hueVal,satVal和ligVal) - 如下所示:

$('#header').css('background-color', hsl(hueVal+','+satVal+','+ligVal));

问题是,由于每个值都在一个函数内,我不知道如何在它们各自的函数之外同时访问所有这三个值。

知道我怎么能这样做吗?

4 个答案:

答案 0 :(得分:3)

考虑在函数之外声明全局变量:

var hueVal;
var satVal;
var ligVal;

$('#hue').filter(':selected').val().change(function(){
    hueVal = $(this).val();
    return hueVal;
})

$('#sat').filter(':selected').val().change(function(){
    satVal = $(this).val();
    return satVal;
})

$('#lig').filter(':selected').val().change(function(){
    ligVal = $(this).val();
    return ligVal;
})

$('#header').css('background-color', hsl(hueVal+','+satVal+','+ligVal);

答案 1 :(得分:1)

试试这个:

$('select').change(function() {
    var hue = $('#hue').val(),
        sat = $('#sat').val(),
        lig = $('#lig').val();

    $('#header').css('background-color', 'hsl('+ hue +','+ sat +','+ lig +')');
}).trigger('change');

编辑:background-color的值需要是一个完整的字符串

答案 2 :(得分:0)

声明函数之外的变量,然后修改函数内部的变量(在此上下文中返回值是无用的):

var hueVal,
    satVal,
    ligVal;

$('#hue').filter(':selected').val().change(function(){
    hueVal = $(this).val();
});

$('#sat').filter(':selected').val().change(function(){
    satVal = $(this).val();
});

$('#lig').filter(':selected').val().change(function(){
    ligVal = $(this).val();
});

然后你可以用它们做你想做的事,即:

$('#header').css('background-color', hsl(hueVal+','+satVal+','+ligVal);

您可能还想阅读scope

答案 3 :(得分:0)

您可以使用对象来管理这些值。

var color = {
    hue: $('#hue').val(),
    sat: $('#sat').val(),
    lig: $('#lig').val()
};

$('#hue,#sat,#lig').change(function() {
   color[this.id] = $(this).val();
   $('#header').css('background-color', 'hsl('+color.hue+','+color.sat+','+color.lig+')');
});

注意:

  • 使用.val()可以获取所选的选择值。
  • hsl是css表达式,它也需要是一个字符串。