Foros del Web » Programando para Internet » Javascript »

Aun no puedo, mis practicas javascript se me complican

Estas en el tema de Aun no puedo, mis practicas javascript se me complican en el foro de Javascript en Foros del Web. Hola, Tengo las siguientes variables: var jscodigo1=12345; var jsdescripcion1="libros"; var jsprecios1=100.00; var jscodigo2=23451; var jsdescripcion2="revistas"; var jsprecios2=200.00; var jscodigo3=34512; var jsdescripcion3="periodicos"; var jsprecios3=50.00; var jscodigo4=45123; ...
  #1 (permalink)  
Antiguo 25/08/2008, 20:58
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Aun no puedo, mis practicas javascript se me complican

Hola,

Tengo las siguientes variables:

var jscodigo1=12345;
var jsdescripcion1="libros";
var jsprecios1=100.00;
var jscodigo2=23451;
var jsdescripcion2="revistas";
var jsprecios2=200.00;
var jscodigo3=34512;
var jsdescripcion3="periodicos";
var jsprecios3=50.00;
var jscodigo4=45123;
var jsdescripcion4="folletos";
var jsprecios4=20.35;

Son cuatro series de codigos, descripcion, y precios

Ahora tengo tres campos input codigo, descripcion precio;
<input type=text id=codigo><input type=text id=descripcion><input type=text id=precio>

Necesito hacer lo siguiente:

Además hacer un loop para que en lugar de solo tres campos input tenga pueda tener 12 (4 series de tres) puesto que asi tendría 4 campos codigo, 4 campos descripcion y 4 campos precios para poder utilizar en algun momento la serie completa.

Que cuando escriba en el campo codigo cualquier dato este lo compare con las variables que tengo arriba y si encuentra un valor igual que tome su descripcion y su precio correspondiente y lo escriba en el input correspondiente.

Esto debe hacerse al realizar el cambio puede utilizarse onchange

Cualquier comentario, ayuda son bienvenidos
muchas gracias

Última edición por jcouoh; 26/08/2008 a las 06:28
  #2 (permalink)  
Antiguo 26/08/2008, 06:50
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
De acuerdo Respuesta: Aun no puedo, mis practicas javascript se me complican

Vayamos por partes:

1) Puedes hacer un bucle for de 1 a 4 que devuelva los input con document.write().

2) Para esto puedes hacer una función que tome el id del input y lo compare con la variable correspondiente. En realidad esta parte ya no es tan complicada si haces correctamente el for (bucle).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 26/08/2008, 07:12
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Gracias,
he hecho el loop de la siguiente manera:

var indice=4;
for (num=0; num<indice;num++)
{
document.write("<input type=text id=codigo><input type=text

id=descripcion><input type=text id=precio><br>");
}

el cual me crea los doce campos que necesito segun el ejemplo, solo que quisiera poder llamar al campo de la siguiente manera codigo1, codigo2, codigo3, codigo4; descripcion1,descripcion2,descripcion3, descripcion4;precio1,precio2,precio3,precio4

me pueden orientar?
  #4 (permalink)  
Antiguo 26/08/2008, 07:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
De acuerdo Respuesta: Aun no puedo, mis practicas javascript se me complican

El id debe ser único, así que el código del bucle sería:
Código PHP:
var indice=4;
for (
num=0num<indice;num++)
{
document.write("<input type='text' id='codigo"+num+"'>");
document.write("<input type='text' id='descripcion" num "'>");
document.write("<input type='text' id='precio" num "'><br>");

Lo que hacemos es añadir el número que tenemos en la variable num al id del campo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 26/08/2008, 07:35
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Perfecto, ahora como puedo hacer para que cuando yo escriba un valor en el campo codigo1 cualquiera de los jscodigo lo compare con las variables y me muestre en el campo descripcion1 el valor correspondiente (en este caso jsdescripcion) y tambien me muestre en el campo precio1 el valor correspondiente?
  #6 (permalink)  
Antiguo 26/08/2008, 07:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: Aun no puedo, mis practicas javascript se me complican

En ese caso lo que tienes que hacer es como te dije una función que tome como parámetro el número único que asignamos a cada grupo de input y de acuerdo a eso comparar con las variables.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 26/08/2008, 07:44
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

OK voy a intentar la funcion
muchas gracias
  #8 (permalink)  
Antiguo 26/08/2008, 10:18
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

No obtengo resultado, no puedo realizar la funcion,

esto es lo que tengo

<html><head></head><body>

<form>
<script>

var jscodigo1=12345;
var jsdescripcion1="libros";
var jsprecios1=100.00;
var jscodigo2=23451;
var jsdescripcion2="revistas";
var jsprecios2=200.00;
var jscodigo3=34512;
var jsdescripcion3="periodicos";
var jsprecios3=50.00;
var jscodigo4=45123;
var jsdescripcion4="folletos";
var jsprecios4=20.35;
var indice=4;
function cambioinput()
{


contenido1=document.getElementById("codigo1").valu e;
document.getElementById("descripcion1").value =

jsdescripcion1;
document.getElementById("precio1").value = jsprecios1;


}

for (num=1; num<=indice;num++)
{
document.write("<input type='text' id='codigo"+num+"'

onchange='cambioinput()'> ");
document.write("<input type='text' id='descripcion" + num +

"'>");
document.write("<input type='text' id='precio" + num +

"'><br>");
}
</script>

</form>
</body></html>
  #9 (permalink)  
Antiguo 26/08/2008, 10:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: Aun no puedo, mis practicas javascript se me complican

Pero con tu función lo único que estás procesando es el primer grupo de inputs, cuando lo que puedes hacer es una función general que procese cualquier input con solo recibir el id, prueba con esto:
Código PHP:
function cambioinput(vid)
{
contenido=document.getElementById("codigo" vid).value;
if (
contenido==eval("jscodigo" vid)) {
document.getElementById("descripcion" vid).value = eval("jsdescripcion" vid);
 
document.getElementById("precio" vid).value = eval("jsprecios" vid);
}

Con eso lo único que tendrás que pasarle es el respectivo número que le asignamos a cada grupo de inputs.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 26/08/2008, 10:32
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Tienes toda la razón, de hecho ese ha sido mi problema, cre que tienes razon en cuanto a una funcion general, por otro lado estoy buscando por tu ejemplo que significa vid o como funciona pero no encuentro aun nada en google, creo que esa es la pauta para poder hacer klo que señalas de asignar a cada grupo de inputs

voy a seguir trabajando en ello, sigo y como siempre muchas gracias por tu ayuda
  #11 (permalink)  
Antiguo 26/08/2008, 10:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Exclamación Respuesta: Aun no puedo, mis practicas javascript se me complican

vid es solo una variable que recibimos como parámetro .

Por ejemplo, si la llamada a la función fuese:
Código PHP:
cambioinput('1'); 
La variable vid tomaría como valor "1", con lo que el grupo de inputs a ser modificado sería el primero.

Aunque ahora, mirando mejor, creo que me equivoqué, porque lo que hace la función que te puse es comparar si el codigo1 por ejemplo, sea igual a jscodigo1 cuando debería comparar con cualquiera de las variables, eso se puede hacer con un bucle for.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 26/08/2008, 11:41
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Estoy tratando de hacer el bucle para tomar los datos pero no me da resultado

Esto es lo que hice:

function cambioinput()
{

for (nums=1; nums<=indice;nums++)
{
contenido=document.getElementById("codigo" + nums).value;
if (contenido == eval ("jscodigo" +nums))
{
document.getElementById("descripcion"+nums).value =

eval("jsdescripcion"+nums);
document.getElementById("precio"+nums).value =

eval("jsprecios" + nums);
}


}
}
  #13 (permalink)  
Antiguo 26/08/2008, 11:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: Aun no puedo, mis practicas javascript se me complican

A hacer un bucle que compare todos los datos me refería a comparar solo el id que obtenemos en el parámetro con todas las variables. Sería algo así:
Código PHP:
function cambioinput(vid) {
contenido=document.getElementById("codigo" vid).value;
for (
nums=1nums<=indice;nums++) { 
    if (
contenido == eval("jscodigo" nums)) {
        
document.getElementById("descripcion"+vid).value = eval("jsdescripcion"+nums);
        
document.getElementById("precio"+vid).value = eval("jsprecios" nums);
     }
  }

__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 26/08/2008, 11:53
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Me parece bien, pero como llamo a la funcion y en donde ya que aun no encuentro lo que hace.
  #15 (permalink)  
Antiguo 26/08/2008, 11:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
De acuerdo Respuesta: Aun no puedo, mis practicas javascript se me complican

Puedes usar el evento onchange del primer input de cada grupo, en la llamada solo debes especificar el número del grupo. Por ejemplo, para el primer grupo sería:
Código PHP:
cambioinput('1'); 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #16 (permalink)  
Antiguo 26/08/2008, 12:04
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

OK muchas gracias
  #17 (permalink)  
Antiguo 26/08/2008, 12:21
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

He hecho esto pero parece no funcionar:

<html><head></head><body>

<form>
<script>

var jscodigo1=12345;
var jsdescripcion1="libros";
var jsprecios1=100.00;
var jscodigo2=23451;
var jsdescripcion2="revistas";
var jsprecios2=200.00;
var jscodigo3=34512;
var jsdescripcion3="periodicos";
var jsprecios3=50.00;
var jscodigo4=45123;
var jsdescripcion4="folletos";
var jsprecios4=20.35;
var indice=4;

function cambioinput(vid) {
contenido=document.getElementById("codigo" + vid).value;
for (nums=1; nums<=indice;nums++) {
if (contenido == eval("jscodigo" + nums)) {
document.getElementById("descripcion"+vid).value =

eval("jsdescripcion"+nums);
document.getElementById("precio"+vid).value =

eval("jsprecios" + nums);
}
}
}




for (num=1; num<=indice;num++)
{
document.write("<input type='text' id='codigo"+num+"'

onchange='cambioinput(num)'> ");
document.write("<input type='text' id='descripcion" + num +

"'>");
document.write("<input type='text' id='precio" + num +

"'><br>");
}
</script>

</form>
</body></html>
  #18 (permalink)  
Antiguo 26/08/2008, 12:28
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Exclamación Respuesta: Aun no puedo, mis practicas javascript se me complican

Es que aquí estás poniendo num dentro de la cadena, por lo cual no toma el valor de la variable:
Código PHP:
document.write("<input type='text' id='codigo"+num+"'  onchange='cambioinput(num)'> "); 
Debería ser:
Código PHP:
document.write("<input type='text' id='codigo"+num+"' onchange=\"cambioinput('" num "')\"> "); 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 26/08/2008, 12:37
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Muchas gracias no hubiera hecho nada sin tu ayuda, acabo de bajar un manual javascript y espero mejorar en esto muchisimas gracias
  #20 (permalink)  
Antiguo 26/08/2008, 12:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Exclamación Respuesta: Aun no puedo, mis practicas javascript se me complican

Me alegra que te haya funcionado.

Esperamos que aprendas bastante . Si tienes alguna duda, estamos por acá.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #21 (permalink)  
Antiguo 26/08/2008, 12:41
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Aun no puedo, mis practicas javascript se me complican

Voy a estar estudiando y haciendo practicas, una pregunta ¿se califica en el foro la ayuda??'
  #22 (permalink)  
Antiguo 26/08/2008, 12:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
De acuerdo Respuesta: Aun no puedo, mis practicas javascript se me complican

No entendí muy bien, si te refieres a que alguien te ayudó y quieres agradecerle puedes usar el sistema de karma, si te fijas, todos los mensajes tienen el ícono , sirve para dar karma a alguien que te ayudó.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 15:56.