Foros del Web » Programando para Internet » Javascript »

Paso de Array a una funcion, problema!!

Estas en el tema de Paso de Array a una funcion, problema!! en el foro de Javascript en Foros del Web. Hola!!! Bueno a ver si me podeis ayudar pq llevo todo el dia y nada!! La pregunta es esta, tengo un array, en realidad una ...
  #1 (permalink)  
Antiguo 02/12/2008, 13:55
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Paso de Array a una funcion, problema!!

Hola!!!

Bueno a ver si me podeis ayudar pq llevo todo el dia y nada!! La pregunta es esta, tengo un array, en realidad una matriz, con datos y cuando se la paso como argumento a una funcion en el evento onclick me lo trata como si fuera una cadena de texto!!! y claro no puedo acceder a los datos contenidos dentro...

Si no tiene mas vuelta de hoja, el codigo es este, y la funcion está dentro de un .js externo:

Código:
<script language="javascript" src="../js/scripts.js">
	 	
var infoGrupos = new Array(2);	
infoGrupos[0] = new Array(3);
infoGrupos[1] = new Array(3);

infoGrupos[0][0] = loqsea.
...
sigo rellenando...
			
</script>

<div onclick="accion('infoGrupos')"> ... sigue codigo...
pero sencillamente a priori no me deberia dar ningun problema pero no puedo acceder a los datos!! porque es una cadena de texto!!

Muchisimas gracias por adelantado
  #2 (permalink)  
Antiguo 02/12/2008, 13:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Paso de Array a una funcion, problema!!

Lógicamente que si pones entre comillas ('infoGrupos') lo tomará como cadena de texto, debe ir sin ellas (infoGrupos)

Saludos .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 02/12/2008, 15:12
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

mmmm parece logico... pero lo he hecho quitandole las comillas y me da el error en Firefox de que

infoGrupos is not defined

q...????!!!! lo tengo declarado, y me lo da al llamar a la funcion

var infoGrupos

con ese mismo nombre y todo...
  #4 (permalink)  
Antiguo 02/12/2008, 15:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Paso de Array a una funcion, problema!!

¿Por qué apuntas en el src del tag script a otro archivo? ¿Tienes el código Javascript en un archivo separado?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 02/12/2008, 15:26
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

Sip, el codigo del script de la funcion esta en un archivo separado, mas que nada para no guarrear tanto la pagina, tengo otras funciones en ese .js y van bien vaya, incluso esa cosas q hago antes de utilizar el "infoGrupos" el array van bien, el problema es que no se pasa como argumento...
  #6 (permalink)  
Antiguo 02/12/2008, 15:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Paso de Array a una funcion, problema!!

Debería funcionar dependiendo del contexto en que colocas el código de iniciar el array. ¿Podrías poner cómo exactamente tienes el código de tu archivo .js?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 02/12/2008, 15:36
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

si claro:

La funcion "acciones" es la q llamo en el onclick con la llamada

Código:
onclick="acciones('2',infoGrupos)"
Código:
function acciones(indice, infoGrupos) {
	seleccion("div"+indice);
	mostrarInfo((indice-1), infoGrupos);
};

function mostrarInfo(grupo,infoGrupos) {
	var infoDIV = document.getElementById("info");
	var tablaDIV = document.getElementById("tab_info");
	tablaDIV.removeChild(infoDIV);

	var info = document.createElement("div");
	info.setAttribute("class", "informacion");
	info.setAttribute("id", "info");
	
	var div;
	var txtTit;
	var span;
	var TxtInf;
	
	div = document.createElement("div");
	txtTit = document.createTextNode("Nombre:");
	div.appendChild(txtTit);
	span = document.createElement("span");
	txtInf = document.createTextNode(infoGrupos[grupo][0]);
	span.appendChild(txtInf);
	div.appendChild(span);
	info.appendChild(div);

....
y ya sigue el codigo de la funcion... oye voy a cenar, ahora vuelvo!!
  #8 (permalink)  
Antiguo 02/12/2008, 15:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Paso de Array a una funcion, problema!!

¿Y la parte donde asignas el valor a infoGrupos? ¿Lo tienes dentro de una función o dónde?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 02/12/2008, 16:04
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

lo tengo en la pagina del html, entre las etiquetas de <script> vaya, como te dije en la primera respuesta...

Código:
<script type="text/javascript" src="../js/scripts.js">
	 	
		var ngrupos = <? echo mysql_num_rows($result_agr); ?>;
		var infoGrupos;
		infoGrupos = new Array(ngrupos);
		var grupo = 0;
	
	<? while ($row_agr = mysql_fetch_array($result_agr)) {
			$sql = 'SELECT * FROM `grupo_practicas` WHERE `nombre`="'.$row_agr['grupo_practicas_nombre'].'";'; 
			$result_gr = mysql_query($sql);
	?>
			infoGrupos[grupo] = new Array(6);
			var nombre_gr = <? echo ucwords($row_agr['grupo_practicas_nombre']); ?>;
	
	<?		while ($row_gr = mysql_fetch_array($result_gr)) {
	?>
				var hora_gr = <? echo $row_gr['hora']; ?>;
				var duracion_gr = <? echo $row_gr['duracion']; ?>;
				
	<?			$sql = 'SELECT * FROM `profesor` WHERE `dni`="'.$row_gr['profesor_dni'].'";'; 
				$result_pr = mysql_query($sql);
				$row_pr = mysql_fetch_array($result_pr);
	?>
				var nombre_pr = <? echo $row_pr['nombre']; ?>;
				var apellidos_pr = <? echo $row_pr['apellidos']; ?>;
				var despacho_pr = <? echo $row_pr['despacho']; ?>;
	<?
			}
	?>
			infoGrupos[grupo][0] = nombre_gr;
			infoGrupos[grupo][1] = hora_gr;
			infoGrupos[grupo][2] = duracion;
			infoGrupos[grupo][3] = nombre_pr;
			infoGrupos[grupo][4] = apellidos_pr;
			infoGrupos[grupo][5] = despacho_pr;
			grupo++;
	<?PHP
		}
	?>

</script>
  #10 (permalink)  
Antiguo 02/12/2008, 19:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Paso de Array a una funcion, problema!!

Es que si colocas un src para el tag script el código entre las etiquetas no se ejecuta .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 03/12/2008, 04:15
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

Pues nop, eso no es... lo he puesto en una etiqueta script aparte y sigue dando el mismo error... además, el código si que se ejecutaba porque al cargar la pagina y decirle al navegador "ver codigo fuente" se veia perfectamente q el codigo se habia ejecutado y se le habia asignado valores a "infoGrupos".

El caso es, que si le pongo las comillas simples me lo trata como una cadena, y si se las quito me dice que no está definido...

¿?¿?¿?¿?

Creo q voy a probar a sacar la funcion del archivo .js y ponerlo en este mismo a ver si es que no se pueden linkar funciones para pasarle tal tipo de argumentos... ahora te digo
  #12 (permalink)  
Antiguo 03/12/2008, 04:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Paso de Array a una funcion, problema!!

Viendo este código (cogiendo un par de líneas cualquiera como ejemplo):

Código php:
Ver original
  1. var nombre_pr = <? echo $row_pr['nombre']; ?>;
  2. var apellidos_pr = <? echo $row_pr['apellidos']; ?>;

Me imagino que el código generado, el que ves cuando le das a ver código fuente, estará saliendo algo así:

Código javascript:
Ver original
  1. var nombre_pr = Pepe;
  2. var apellidos_pr = Martin Toledo;

Lo cual claramente está mal. Lo que debería generarse tendría que ser algo como:

Código javascript:
Ver original
  1. var nombre_pr = "Pepe";
  2. var apellidos_pr = "Martin Toledo";
  #13 (permalink)  
Antiguo 03/12/2008, 04:30
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

... puede ser... voy a probarlo ahora mismo y os digo

Gracias anticipadas!
  #14 (permalink)  
Antiguo 03/12/2008, 04:36
 
Fecha de Ingreso: diciembre-2008
Mensajes: 14
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Paso de Array a una funcion, problema!!

Cita:
Iniciado por venkman Ver Mensaje
Viendo este código (cogiendo un par de líneas cualquiera como ejemplo):

Código php:
Ver original
  1. var nombre_pr = <? echo $row_pr['nombre']; ?>;
  2. var apellidos_pr = <? echo $row_pr['apellidos']; ?>;

Me imagino que el código generado, el que ves cuando le das a ver código fuente, estará saliendo algo así:

Código javascript:
Ver original
  1. var nombre_pr = Pepe;
  2. var apellidos_pr = Martin Toledo;

Lo cual claramente está mal. Lo que debería generarse tendría que ser algo como:

Código javascript:
Ver original
  1. var nombre_pr = "Pepe";
  2. var apellidos_pr = "Martin Toledo";


era eso!!!! dios, me podia haber tirado semanas hasta darme cuenta!!! Muchas Gracias chicos!! os debo una!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.