javascript - jquery函数包含来自外部的变量,但无法读取它

标签 javascript jquery html variables

我正在编码一组动态选择,并使用 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”之一。

关于javascript - jquery函数包含来自外部的变量,但无法读取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479912/

相关文章:

javascript - 强制网页的所有打开实例在 Google Chrome 网络应用程序中刷新

javascript - 带有 id 属性的 HTML 标签

Javascript替换字符串中的动态文本

javascript - jQuery UI 可拖动超出事件顺序

javascript - 如何使用一个<img>标签来执行2个不同的js函数?

javascript - 添加 ajax 来删除对象 - Rails

javascript - jquery pjax + jquery Tipsy 单击后鼠标悬停时工具提示不会隐藏

javascript - 如何覆盖 `<base target="_blank">`

javascript - jQuery Accordion 选项卡颜色问题

javascript - 使用 jQuery addClass 更改背景图像