Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2013, 18:31
Profesor_Lambetain
 
Fecha de Ingreso: septiembre-2010
Mensajes: 67
Antigüedad: 13 años, 8 meses
Puntos: 1
Parámetros pasados entre funciones que cambian de tipo inexplicablemente.

Hola todos,
(aclaro que soy aficionado).
Tengo el siguiente código JS:

Código HTML:
function arbol(p,anchos,altos) { /* Formato de p: string tipo "nnnnn", donde n es carácter numérico. Formato de anchos y altos: string tipo "nnnnn,nnnnnnn,nnn,nnnnnnn,nnn,nnnnnnn,nnn,nnnnn,nnnnnnn,nnn,nnnnnnn,nnn,nnnnnnn,nnn,..." 
siendo TODOS SUS CARACTERES n dígitos numéricos o comas, y su longitud puede llegar a varias decenas de caracteres (en la versión final del código puede llegar a algunos miles) */
alert("Estoy en arbol...\n\n"+anchos+"\n\n"+altos); // Este alert funciona bien: PRESENTA LOS STRINGS anchos Y altos CORRECTAMENTE.
alert(typeof(anchos)+"    "+typeof(altos)); /* Este alert reporta correctamente el tipo de ambos argumentos como string y string. */
...
	// Llamada a la función show con evento onClick sobre el icono/carácter Unicode 📷
document.getElementById('iconos').innerHTML="<a href=\"javascript:void(0);\" class=\"pops\" title=\"Descripción...\" onClick=\"javascript:show("+p+","+anchos+","+altos+");\">&#x1F4F7;</a>";
...
}

function show(p,anchos,altos) { /* La función show está dentro del mismo documento .js que la función arbol. */
...
alert("Ahora estoy en show...\n\n"+anchos+"\n\n"+altos); /* Este alert presenta dos números como los parámetros anchos y altos que no tienen relación con los strings transferidos desde function arbol. */

alert(typeof(anchos)+"    "+typeof(altos)); /* Este alert reporta los parámetros anchos y altos como tipo “number”. */
...
}
...

El problema consiste en que en la función árbol (que recibe dos argumentos desde PHP llamados anchos y altos (ambos strings) y que queda demostrado que efectivamente son strings y que su contenido es el correcto, ya que lo compruebo con los dos alerts que ejecuto dentro de la función... dicho sea de paso: exportar desde PHP estos dos argumentos hacia la función árbol me costó dos días, ja, ja) se llama a la función show entregando esos dos mismos argumentos anchos y altos, pero al ser transferidos dichos dos argumentos se cambia automáticamente su tipo y su valor es un número que no tienen relación (al menos yo no la puedo ver) con el valor de los strings originales.

He probado con forzar la instrucción de definición del innerHTML de la etiqueta <a> en function árbol así:

Código HTML:
document.getElementById('iconos').innerHTML="<a href=\"javascript:void(0);\" class=\"pops\" title=\"Descripción...\" onClick=\"javascript:show("+p+","+String(anchos)+","+String(altos)+");\">&#x1F4F7;</a>";
pero el resultado es exactamente el mismo, erróneo.

No puedo ver dónde está el fallo. Gracias anticipadas por darme alguna orientación.