Функция jquery включает переменные извне, но не может прочитать - PullRequest
1 голос
/ 20 сентября 2011

я кодирую динамический набор выборок, изменяя значения опций с помощью 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 ...

Итак, как я могу это сделать?

Спасибо всем и извините за мой английский ..

1 Ответ

0 голосов
/ 20 сентября 2011

Я неправильно понимаю разницу между объявлением встроенной функции и объявлением стандартной функции.

В любом языке программирования вы не можете повторно использовать переменные, объявленные в другой функции.Тот факт, что когда вы используете встроенную функцию с jQuery, передает все ваши локальные переменные, потому что javascript анализирует ваши встроенные объявленные переменные ВНУТРИ вашей другой функции, которая делает все ваши локальные переменные такими, как если бы они были глобальными.

Ваша функция "muestra" объявлена ​​ВНЕ вашей функции "change", тогда как ваша функция "each" находится в пределах вашей функции "change", которая делает всю локальную переменную "change" доступной для функции "each", но, конечно, не для"Муэстра" одна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...