Jquery函数包含外部变量,但不能读取

jquery function include vars from outside, but cant read it

本文关键字:但不能 读取 变量 函数 包含外 Jquery      更新时间:2023-09-26

我正在编写一个动态选择集,使用jquery更改选项值…

下面是我的代码:
function muestra(nombre) {
$("select#" + nombre).html(output.join(''));
$("div#" + nombre).fadeIn('slow');
};   

$("select#fruta").change(function(){
switch ($(this).val()){
    case '1':
        var siguientesValores = {"0":"-- Seleccione --","1":"Nuez Con Cascara","2":"Nuez Sin Cascara"};
        var output = [];
        $.each(siguientesValores, function(key, value) {
          output.push('<option value="'+ key +'">'+ value +'</option>');
        });
        /* The old way... works */
        $('select#tipoproducto').html(output.join(''));
        $("div#tipoproducto").fadeIn('slow');
                    /***/   
        muestra(variedad); // new way, not working
        break;
    case '2': // Almendra > Tipo de Producto
        var siguientesValores = {"0":"-- Seleccione --","3":"Laminadas","4":"Partidas - Rayadas","5":"Almendras con Cascara","6":"Almendras sin Cascara"};
        var otravar = "probando desde fuera de la funcion";
        var output = [];
        $.each(siguientesValores, function(key, value) {
            output.push('<option value="'+ key +'">'+ value +'</option>');
        });
        muestra(variedad);
        break;
        .......
因此,正如我所看到的,函数中的output.join(")不能从case语句传递…

那么,我该怎么做呢?

我认为你误解了内联函数声明和标准函数声明的区别。

在任何编程语言中,都不能重用在其他函数中声明的变量。事实上,当你使用jQuery的内联函数传递你所有的局部变量是因为javascript在你的其他函数中分析你的内联声明的变量,这使得你所有的局部变量就像它们本来是全局的一样。

你的"muestra"函数被声明在你的"change"函数之外,而你的"each"函数在你的"change"函数内,这使得所有的"change"局部变量都可以被"each"函数访问,但肯定不能被"muestra"函数访问。