Foros del Web » Programando para Internet » Javascript »

Variable undefined

Estas en el tema de Variable undefined en el foro de Javascript en Foros del Web. Hola compañeros, haber si me podeis echar un cable y decirme porque me dice que la variable imgbebida no esta definida: JS Código HTML: var ...
  #1 (permalink)  
Antiguo 05/04/2011, 16:26
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Variable undefined

Hola compañeros,

haber si me podeis echar un cable y decirme porque me dice que la variable imgbebida no esta definida:

JS
Código HTML:
	var j = 0;
	var bebidas = new Array(10);
	var altbebidas = new Array(10);
	var namebebidas = new Array(10);
    function cambiarValores(obj, prod) { //Recibimos el objeto y el nombre de la bebida
      var img = obj.src, k;
	  img = img.split('/').pop();
      img = img == 'boton-bebidas-' + obj.alt + '-off.png' ? 'images/boton-bebidas-' + obj.alt + '-on.png' : 'images/boton-bebidas-' + obj.alt + '-off.png';
      obj.src = img;
	  for(i=0;i<10;i++) {
	    if(bebidas[i] == prod) {
		  var bebida = bebidas[i];
		  var altbebida = altbebidas[i];
          var imgbebida = document.getElementsByName(bebida)[0];
		  imgbebida.src = 'images/boton-bebidas-' + altbebida + '-off.png';
	    }
		var conta = 0;
		for(k=0;k<10;k++){if(i!=k){conta++;}}
		if(conta==10){i++;}
	  }
	  bebidas[j] = prod;
	  altbebidas[j] = obj.alt
	  namebebidas[j] = obj.name;
}
HTML
Código HTML:
 <td>
	              <img src="images/boton-bebidas-1-off.png" name="c1" alt="1" onclick="cambiarValores(this,'CocaCola')" />
	              <input type="hidden" name="coca-cola-1" value="bebida" />
	            </td>
	            <td>
	              <img src="images/boton-bebidas-2-off.png" name="c2" alt="2" onclick="cambiarValores(this,'CocaCola')" />
	              <input type="hidden" name="coca-cola-2" value="bebida" />
	            </td>
	          </tr> 

Saludos ;)
  #2 (permalink)  
Antiguo 05/04/2011, 16:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 20 años, 9 meses
Puntos: 1284
Respuesta: Variable undefined

Hola:

Según parece quieres referenciar un elemento por su nombre (name), pero ese valor se lo has asignado al value...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/04/2011, 16:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 14 años, 7 meses
Puntos: 1011
Respuesta: Variable undefined

le has asignado el value el nombre del elemento

edito: lo siento, creo que aún no habías publicado
  #4 (permalink)  
Antiguo 06/04/2011, 12:55
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Respuesta: Variable undefined

Os refereis a estas lineas no?

Código HTML:
var bebida = bebidas[i];
Código HTML:
 <input type="hidden" name="coca-cola-2" value="bebida" /> 
Mismo nombre de variable y mismo valor de value. Si es eso ya lo probé cambiando el nombre de la variable javascript por bbida por ejemplo y sigue dando el mismo fallo, imgbebida undefined.

Saludos ;)
  #5 (permalink)  
Antiguo 06/04/2011, 13:26
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 12 años, 7 meses
Puntos: 63
Respuesta: Variable undefined

No entiendo muy bien la función del script, pero el error que comentas sucede por que estas enviando como valor 'CocaCola' y ningun elemento dentro del html tiene ese nombre, si en cambio utilizas por ejemplo:

Código HTML:
<img src="images/boton-bebidas-1-off.png" name="c1" alt="1" onclick="cambiarValores(this,'c1')" /> 
El error desaparecera, como consejo trata de organizar mejor tu codigo, asignaciones como:
Código Javascript:
Ver original
  1. var bebida = bebidas[i];
se me hacen innecesarias, si ya sabes que bebidas[i] es igual a prod, sigue utilizando prod.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #6 (permalink)  
Antiguo 06/04/2011, 14:50
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Respuesta: Variable undefined

Funciona como dices laratik pero no me vale


Por que no puedo enviar una cadena, guardarla y comprobar si la nueva cadena pasada no es la misma que la anterior? Me parece un fallo por parte de javascript a no ser que tenga una explicación logica y util.

laratik debo pasar en cada serie un mismo valor de alguna manera. La idea es la siguiente, tenemos varias series de numeros:

1 2 3 4 5
1 2 3 4 5

Al seleccionar un numero(cada numero es una imagen) de la primera serie, este cambiara su imagen. Al seleccionar sobre otro numero de la misma serie, la anterior numero volvera a tener la imagen por defecto y el nuevo numero seleccionado cambiara su imagen. Así sucesivamente en cada serie sin importar la seleccion entre distintas series.
  #7 (permalink)  
Antiguo 06/04/2011, 16:17
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 14 años, 7 meses
Puntos: 1011
Respuesta: Variable undefined

el error está aquí
Cita:
var imgbebida = document.getElementsByName(bebida)[0];
según tu lógica, bebidas[i] es igual a cocacola pero no existe ningún control con tal nombre

Última edición por IsaBelM; 06/04/2011 a las 16:24
  #8 (permalink)  
Antiguo 06/04/2011, 16:46
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Respuesta: Variable undefined

Cita:
Iniciado por IsaBelM Ver Mensaje
el error está aquí

según tu lógica, bebidas[i] es igual a cocacola pero no existe ningún control con tal nombre
Hola de nuevo IsaBelM,

intentas decirme que el fallo es porque bebidas[i] esta vacio? utilizo mal el array?

Siento si la pregunta tiene poco fundamento pero estoy empezando con javascript
  #9 (permalink)  
Antiguo 06/04/2011, 16:56
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 14 años, 7 meses
Puntos: 1011
Respuesta: Variable undefined

prueba de asignandole a los controles el name CocaCola
Cita:
<input type="hidden" name="CocaCola" value="bebida" />
suponiendo que esta condicional se cumple if(bebidas[i] == prod)
  #10 (permalink)  
Antiguo 06/04/2011, 21:38
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 12 años, 7 meses
Puntos: 63
Respuesta: Variable undefined

Si entiendo lo que necesitas, creo que has planteado mal la lógica de la función, cambia los valores de imágenes y prueba la siguiente función:

Código HTML:
<html>
<head>
<script type="text/javascript">
var anterior = new Array();
var anteriorsrc = new Array();

function cambiarValores(ele,serie) {
	if(typeof anteriorsrc[serie] != "undefined") {
		anterior[serie].src = anteriorsrc[serie];
	}
	anterior[serie] = ele;
	anteriorsrc[serie] = ele.src;
	ele.src = "images/flecha_azul.gif";
}
</script>

</head>
<body>
<table>
<tr>
<td>
	              <img src="images/flecha_hover.png" name="c1" alt="1" onClick="cambiarValores(this,1)" />
	            </td>
	            <td>
	              <img src="images/errorIcon.gif" name="c2" alt="2" onClick="cambiarValores(this,1)" />
	            </td>
	          </tr>
<tr>
<td>
	              <img src="images/flecha_hover.png" name="c1" alt="1" onClick="cambiarValores(this,2)" />
	            </td>
	            <td>
	              <img src="images/errorIcon.gif" name="c2" alt="2" onClick="cambiarValores(this,2)" />
	            </td>
	          </tr>
</table>
</body>
</html> 
El código anterior crea dos lineas de imágenes dentro de la tabla, como comentas:
1 2
1 2
si pulsas el 2 de la primera linea se carga una nueva imagen:
1 3
1 2
y si pulsas el 1, el 2 vuelve a la normalidad y ahora la nueva imagen se colocara en 1:
3 2
1 2
Lo mismo sucede en la segunda linea, por lo menos eso fue lo que entendi que necesitas. Como te ha comentado IsaBelM y mi persona, el error que presentas se debe a que bebidas[i] CONTIENE UN VALOR (no esta vació) que lo tratas de asignar como si fuera el name de un elemento, pero resulta que ningún elemento tiene este name. SALUDOS.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #11 (permalink)  
Antiguo 08/04/2011, 02:23
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Respuesta: Variable undefined

laratik gracias ;), es mas o menos esa la idea.

No entiendo esta parte de tu código:
Código HTML:
	if(typeof anteriorsrc[serie] != "undefined") {
		anterior[serie].src = anteriorsrc[serie];
	}
que quiere decir?


De todas formas no entiendo por qué en tu código le pasas para realizar el control un número y funciona, mientras yo le pasaba una cadena
Código HTML:
onclick="cambiarValores(this,'CocaCola')"
y no funcionaba.
  #12 (permalink)  
Antiguo 08/04/2011, 03:02
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 7
Respuesta: Variable undefined

se la deben haber tomado :P

(lo siento, no he podido resistirme...)
  #13 (permalink)  
Antiguo 08/04/2011, 10:48
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 12 años, 7 meses
Puntos: 63
Respuesta: Variable undefined

Cita:
Iniciado por erxaca Ver Mensaje
No entiendo esta parte de tu código:
Código HTML:
	if(typeof anteriorsrc[serie] != "undefined") {
		anterior[serie].src = anteriorsrc[serie];
	}
que quiere decir?
Quiere decir que si el elemento en anteriorsrc[serie] no ha sido definido no ejecute la siguiente linea, esto para evitar posibles errores en la asignación del array. Sucedería al principio cuando NO haz creado ningún elemento dentro de esa posición.

Cita:
Iniciado por erxaca Ver Mensaje
no entiendo por qué en tu código le pasas para realizar el control un número y funciona, mientras yo le pasaba una cadena
Código HTML:
onclick="cambiarValores(this,'CocaCola')"
y no funcionaba.
No tiene nada que ver lo que le pases, lo que interesa en como lo utilices dentro de la función, ne mi caso el numero que le envió es el indice del array (series, que por cierto debe utilizar 0 y 1 no 1 y 2):

function cambiarValores(ele,serie) {
if(typeof anteriorsrc[serie] != "undefined") {
anterior[serie].src = anteriorsrc[serie];
}
anterior[serie] = ele;
anteriorsrc[serie] = ele.src;
ele.src = "images/flecha_azul.gif";
}

En cambio tu lo que hacías al enviar la cadena era utilizarla como name de un elemento:

function cambiarValores(obj, prod)

bebidas[i] == prod

var bebida = bebidas[i]; //asignación innecesaria bebida [i] es igual a prod

var imgbebida = document.getElementsByName(bebida)[0]; //exactamente lo mismo que hacer: var imgbebida = document.getElementsByName(prod)[0];

si prod = "CocaCola" y no existe ningún elemento con este name, pues te va a saltar el mensaje de que imgbebida es indefinido.

Espero que halla sido lo suficientemente claro. SALUDOS.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #14 (permalink)  
Antiguo 08/04/2011, 11:19
 
Fecha de Ingreso: enero-2010
Mensajes: 389
Antigüedad: 13 años
Puntos: 4
Respuesta: Variable undefined

Cita:
Espero que halla sido lo suficientemente claro. SALUDOS.
Mejor explicado imposible, muchas gracias ;)

Saludos

Etiquetas: undefined, variables
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 18:28.