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