JavaScript - problemas con una función

 
Vista:

problemas con una función

Publicado por Ana (12 intervenciones) el 23/12/2003 19:25:56
¡Hola a todos!
A continuación os pongo el código final de una función. No sé qué ocurre, pero si dejo funcionar el trozo de código que está entre comentarios no me funciona la siguiente línea (una llamada a otra función: pintar();), pero si lo quito sí que funciona la siguiente línea:

/****************************************************************************
si quito este trozo que sigue, SÍ se ejecuta pintar(); si lo dejo, NO se ejecuta pintar () , ¿pq???
*******************************************************************************
if (tipos.options.selectedIndex >= 0 && arreglo[tipos.options.selectedIndex][2])
cargarCombo(arreglo[tipos.options.selectedIndex][2], plantas);
*****************************************************************************/

pintar();

¿Alguien podría decirme qué ocurre?. Muchísimas gracias por adelantado
Un saludo
Ana
PD: No sé si se entiende bien mi problema, si me lo decís intentaré explicarlo un poco mejor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problemas con una función

Publicado por ShFile (171 intervenciones) el 23/12/2003 20:11:29
Hola. Ana.

vi el codigo y tengo una pregunta en la matriz de arreglo ahi estas almacenando valor boleano...

y aparte me gustaria ver el codigo completo para ver porque no te funciona.

Saludos
ShFile (Mexico)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Primera parte

Publicado por Ana (12 intervenciones) el 26/12/2003 18:11:05
¡Hola, shFile!
Muchas gracias por tu interés. Lo siento, no he podido conectarme hasta ahora. La función completa es la siguiente:

function cargarCombo(arreglo, combobox_1, combobox_2) {
combobox_1.options.length = 0;
for (x = 0; x < arreglo.length; x++) {
combobox_1.options[x] = new Option(arreglo[x][0]);
combobox_1.options[x].value = arreglo[x][1];
}
if (combobox_1.options.selectedIndex < 0 && combobox_1.options.length)
combobox_1.options[0].selected = true;

/*******************************************************************************
si quito este trozo que sigue, SÍ se ejecuta pintar() pero NO me rellena el segundo combo;
si lo dejo, SÍ me rellena el segundo combo pero NO se ejecuta pintar () , ¿pq???
*******************************************************************************
if (combobox_1.options.selectedIndex >= 0 && arreglo[combobox_1.options.selectedIndex][2])
cargarCombo(arreglo[combobox_1.options.selectedIndex][2], combobox_2);
******************************************************************************/
pintar();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Segunda Parte

Publicado por Ana (12 intervenciones) el 26/12/2003 18:12:26

Está hecha sobre un código que me mandó un usuario de este foro, VaGo. Se supone que la función cargarCombo hace que se rellene un combobox (combobox_2 ) en función del valor seleccionado en otro (combobox_1). La función pintar() se supone que me pinta en dos <INPUT TYPE="text"> ciertos valores de la matriz dependiendo de lo seleccionado en los combos.
Esas funciones se disparan por eventos de los combos:
<select name="combobox_1" id="combobox_1" onChange="cargarCombo(datos[this.selectedIndex][2], this.form.combobox_2);"></select>
<select name="combobox_2" id="combobox_2" onChange="pintar();"></select>

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Tercera Parte y última

Publicado por Ana (12 intervenciones) el 26/12/2003 18:13:16
Con respecto a la matriz que utilizo, es la siguiente:

datos = [["2", 1, [ ["primero2", 1, "sup2.1","prec2.1"], ["segundo2", 2, "sup2.2","prec2.2"],
["tercero2", 3, "sup2.3","prec2.3"]
]
],
["3A", 2, [ ["primero3A", 1, "sup3A.1","prec3A.1"],
["segundo3A", 2, "sup3A.2","prec3A.2"],
["tercero3A", 3, "sup3A.3","prec3A.3"]
]
],
["4", 3, [ ["primero4", 1, "sup4.1","prec4.1"],
["segundo4", 2, "sup4.2","prec4.2"],
["tercero4", 3, "sup4.3","prec4.3"],
["CUARTO4", 4, "sup4.4","prec4.4"]
]
]]
No tiene booleanos.
En fin, espero que esta información sea suficiente.
Espero noticias
Un saludo
Ana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tercera Parte y última

Publicado por VaGo (171 intervenciones) el 26/12/2003 19:01:35
Ana

El problema es el arreglo que estas utilizando, en el ejemplo que te envié existían 3 combobox, pero tu solo utilizas 2, al parecer quitaste el último nivel del arreglo, pero dejaste los datos:

[["2", 1, [ ["primero2", 1, "sup2.1","prec2.1"], ...

El arreglo original, es así

[["2", 1, [ ["primero2", 1, ["sup2.1","prec2.1"]], ...

Tú deberías utilizar el siguiente:

[["2", 1, [ ["primero2", 1], ...

Las líneas

if (tipos.options.selectedIndex >= 0 && arreglo[tipos.options.selectedIndex][2])
cargarCombo(arreglo[tipos.options.selectedIndex][2], plantas);

Primero pregunta si hay algún elemento del combobox seleccionado, luego pregunta si existe el nivel 2 del arreglo. Se supone que ese nivel contiene otro arreglo con el cual se cargarán los demás datos, sin embargo, tu tienes un valor alfanumérico, en el caso del ejemplo es "sup2.1".

Suerte
SoNo+
SaLu2
.·::VaGo::·.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Tercera Parte y última

Publicado por Ana (12 intervenciones) el 29/12/2003 00:03:46
Muchas gracias, VaGo, una vez más vuelves a salvarme el cuello :)
¡Felices Fiestas!
...y gracias de nuevo
Un saludo
Ana
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar