JavaScript - Problema al traer variable de array

 
Vista:
Imágen de perfil de Cesar Rodriguez

Problema al traer variable de array

Publicado por Cesar Rodriguez (6 intervenciones) el 13/07/2017 19:23:09
Buenas tardes tengo un problema que no he podido solucionar, no soy muy bueno con JavaScript..

tengo un formulario con este código (generado por PHP):

<input name="Cantidad[]" type="text" class="estilo" id="Cantidad[]" value="0" onkeyup="return comparar();">

Lo que necesito es poder leer ese valor de Cantidad[]; desde JavaScript

Intento así:

cantidad = document.getElementById("Cantidad[0]").value;
alert(cantidad);

Pero no me sale nada...ya le he dado vueltas y vueltas y no consigo poder leer el valor. Gracias.
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
Imágen de perfil de Sebastian
Val: 14
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al traer variable de array

Publicado por Sebastian (5 intervenciones) el 13/07/2017 20:06:55
Hola!!
pero que es lo que quiere que haga el aplicativo??

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//para que funcione, el input como en el document deben tener la misma etiqueta
//entonces
// en el php
<input name="Cantidad" type="text" class="estilo" id="Cantidad" value="0" onkeyup="return comparar();">
 
// en el javaScript
function comparar(){
var cantidad = document.getElementById("Cantidad").value;
alert("El valor obtenido es "+cantidad);
// así leera cada vez que precione una tecla
.
.
.
}

No sé que es lo que quieres hacer

Espero que te sirva en algo
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
Imágen de perfil de Cesar Rodriguez

Problema al traer variable de array

Publicado por Cesar Rodriguez (6 intervenciones) el 14/07/2017 03:06:10
Hola, solo poder leer la variable.
Lo que me envias si claro funciona Ok, porque apenas se lee una variable Cantidad, pero yo debo leer una variable Cantidad[] es un array que trae varios datos, se que con un for lo recorro en JavaScript con eso no tengo lio, el lio es poder leer ese array por ejemplo Cantidad[0] de la forma que lo escribes ya lo había probado:

1
2
var cantidad = document.getElementById("Cantidad[0]").value;
alert("El valor obtenido es "+cantidad);

Pero no funciona. Alguna idea...

Gracias.
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
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al traer variable de array

Publicado por kip (107 intervenciones) el 14/07/2017 03:40:44
Hola, primero debes saber que el atributo ID debe ser único para cada elemento, ahora bien puedes intentar usar los selectores CSS en Javascript con la funcion querySelectorAll(), podria ser asi:

1
2
3
<input name="cantidad[]" type="text" class="estilo" value="1">
<input name="cantidad[]" type="text" class="estilo" value="2">
<input name="cantidad[]" type="text" class="estilo" value="3">

Javascript

1
2
var inputs = document.querySelectorAll('input[name="cantidad[]"]');
alert(inputs[0].value);

Asi deberia funcionarte.

Nos avisas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Cesar

Problema al traer variable de array

Publicado por Cesar (6 intervenciones) el 15/07/2017 00:20:56
Perfectoooo !!! ya lee la variable, muchas gracias investigaré un poco más sobre "querySelectorAll" la verdad no la conocia.

Mil y mil gracias !!!
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
Imágen de perfil de Cesar Rodriguez

Problema al traer variable de array

Publicado por Cesar Rodriguez (6 intervenciones) el 18/07/2017 00:25:54
De nuevo lo molesto, Ya hice una comparación que debía hacer en JavaScript ya me funciona bien, ahora el lio es que dependiendo de esa comparación debería cambiar el valor del campo de texto, normalmente lo haría así:

1
document.getElementById("Cantidad").value=texto;

Pero como es un array, no me quiere funcionar...

Tengo este código que es el que me trae la variable:

1
2
var Cantidad = document.querySelectorAll('input[name="Cantidad[]"]');
Cantidad=Cantidad[0].value;

Hice algunas pruebas, pensando que así podría definir el nuevo valor :

1
document.querySelectorAll ('input [name="Cantidad[0]"]') = NuevoValor;

Pero no logro hacer que funcione.

Mil gracias.
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
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al traer variable de array

Publicado por kip (107 intervenciones) el 19/07/2017 00:04:46
Con esto deberia funcionarte:

1
Cantidad[0].value = 'TEXTO!'

Tomas de nuevo el elemento que usaste anteriormente.
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
Imágen de perfil de Cesar Rodriguez

Problema al traer variable de array

Publicado por Cesar Rodriguez (6 intervenciones) el 19/07/2017 00:22:07
No me funciona, así lo probé también en las pruebas iniciales que hice, pero allí apenas le asigno al array en la posición 0 en este caso 'TEXTO'. pero no a la caja de texto...

Ahora estoy en otro dilema fuera del anterior...

Tengo generado dinámicamente esto:

1
2
3
4
5
6
<input name="cantidad[]" type="text" class="estilo" value="1">
<input name="cantidad[]" type="text" class="estilo" value="2">
<input name="cantidad[]" type="text" class="estilo" value="3">
<input name="cantidad[]" type="text" class="estilo" value="4">
<input name="cantidad[]" type="text" class="estilo" value="5">
<input name="cantidad[]" type="text" class="estilo" value="6">

Debo encontrar el indice, pero no he podido.. Me explico un poco, cada campo tiene un campo adicional enfrente con el cual debo hacer una comparación, ese campo se llama 'Saldo[]' tambien generado dinámicamente.

Por ejemplo si escribo sobre el tercer campo 'Cantidad[]' este tendría de indice '2' (cantidad[2]) ese indice es el que necesito conocer, o sea debo conocer en índice de la Caja de texto donde he escrito (cantidad[?])

Como puedo hacer esto?

Espero haberme explicado. mil gracias. !!
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
Imágen de perfil de kip
Val: 553
Bronce
Ha aumentado 1 puesto en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al traer variable de array

Publicado por kip (107 intervenciones) el 19/07/2017 00:55:38
Primero, no le asignas el valor a ningun elemento del array, querySelectorAll te retorna una colección de los nodos que coincidan al selector que se le envia, tu accedes a alguno de estos nodos como de un elemento mas del DOM se tratase, mira este ejemplo:

https://jsfiddle.net/8k9qq87f/
HTML
1
2
3
4
5
6
<input name="cantidad[]" type="text" class="estilo" value="1">
<input name="cantidad[]" type="text" class="estilo" value="2">
<input name="cantidad[]" type="text" class="estilo" value="3">
<input name="cantidad[]" type="text" class="estilo" value="4">
<input name="cantidad[]" type="text" class="estilo" value="5">
<input name="cantidad[]" type="text" class="estilo" value="6">
JS
1
2
3
var Cantidad = document.querySelectorAll('input[name="cantidad[]"]');
var cantidad0 = Cantidad[0].value;
Cantidad[0].value = prompt("El valor del primer elemento cantidad[ ] es " + cantidad0 + '\nIngrese un nuevo valor para este input', 'Nuevo valor');

Ahora para conocer el indice de este o una referencia podrias hacerlo asi:

https://jsfiddle.net/40qn4nk0/
HTML
1
2
3
4
5
6
<input name="cantidad[]" type="text" class="estilo" value="1">
<input name="cantidad[]" type="text" class="estilo" value="2">
<input name="cantidad[]" type="text" class="estilo" value="3">
<input name="cantidad[]" type="text" class="estilo" value="4">
<input name="cantidad[]" type="text" class="estilo" value="5">
<input name="cantidad[]" type="text" class="estilo" value="6">
JS
1
2
3
4
5
6
var inputs = [].slice.call(document.querySelectorAll('input[name="cantidad[]"]'));
for (var i = 0; i < inputs.length; i++) {
	inputs[i].addEventListener('keypress', function(e) {
  	alert('Indice ' + inputs.indexOf(this) + ' y  valor ' + this.value);
  });
}

Lo que hice fue transformar en un array la coleccion de nodos con [].slice.call() y de esa forma obtener el indice.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Cesar

Problema al traer variable de array

Publicado por Cesar (6 intervenciones) el 19/07/2017 02:20:32
Bueno, mil gracias ya se acerca más a lo que necesito, pero aún le falta, por ejemplo
cuando dígito 1 no aparece el alert, luego dígito el 2 (ya en el campo de texto esta el 12) y aparece en el Alert: 1, luego oprimo 3 y aparece en el Alert: 12 y así sucesivamente, en el Alert solo coloca el anterior digitado y no el nuevo que digité. Intente cambiandole a keydown pero sigue igual....

Y por otro lado, no consigo con : var cantidad0 = Cantidad[0].value;
que cambie el valor del campo de texto...

Para lo anterior, yo estaba haciendo este código, funciona, pero tiene un problema que no se que podrá ser:

1
2
3
4
5
6
7
8
9
10
11
var Cantidad = document.querySelectorAll('input[name="Cantidad[]"]');
var saldo = document.querySelectorAll('input[name="Saldo[]"]');
Total=Cantidad.length;                   //TOTAL DATOS EN EL ARRAY, funciona OK
 
for(i=0;i<Total;i++)
{
	Cantidad=Cantidad[i].value;
	Saldo=saldo[i].value;
 
	alert(Saldo+">="+Cantidad);
}

En este caso, se generaron 2 Casillas de Texto Cantidad[] y 2 Saldo[] que ya viene con un número predefinido que tomo de la BD , digito en el campo Cantidad[0] el número 1 aparece en el Alert: 90>=1 hasta allí todo bien, pero cuando acepto el Alert debería aparecer : 300>=0 pero no aparece nada. Ahora digito en la primera casilla un numero adicional-> Cantidad[0] ='12' (agregue un 2) y me aparece en el Alert: 90>=12 acepto el alert y aparece en el siguiente Alert: 384912>=undefined
Entonces lo primero que esta mal es que solo aparece al digitar el primer número un Alert, cuando debería imprimir 2, ya que el Total=2 ya lo comprobé, y el segundo error es que aparece Undefined en el segundo alert después de digitar el número 2, cuando debería ser =0 que es un número predeterminado que traen las cajas de texto. Si digito en la caja de texto 2--> Cantidad[1]=5 me aparece primer Alert: 300>=12 y el el segundo Alert: 384912>=undefined sigue apareciendo como si no existiera.... yo intente solo imprimir por ejemplo: Cantidad[1] y lo imprime bien, si imprimo Cantidad[0] antes de ese, ya de nuevo sale Undefined....

Espero me haya hecho entender.

Mil y mil Gracias.
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
Imágen de perfil de Sebastian
Val: 14
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Problema al traer variable de array

Publicado por Sebastian (5 intervenciones) el 14/07/2017 03:52:29
con el document llamas los objetos con el mismo id
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar