Foros del Web » Programando para Internet » Javascript »

Cambiar de nombre.value a getElementById

Estas en el tema de Cambiar de nombre.value a getElementById en el foro de Javascript en Foros del Web. Vereis, necesito transformar mi código javascript que coge los valores de los nombres de los inputs de un formulario para que los coja por id ...
  #1 (permalink)  
Antiguo 27/02/2009, 10:46
 
Fecha de Ingreso: febrero-2008
Mensajes: 39
Antigüedad: 16 años, 2 meses
Puntos: 0
Cambiar de nombre.value a getElementById

Vereis, necesito transformar mi código javascript que coge los valores de los nombres de los inputs de un formulario para que los coja por id y así poder pasarlo por php pero no me aclaro..

Código HTML:
for (i=0; i<document.factura.lista1.length; i++){
val1 = (! parseFloat(document.factura.lista1[i].value))?0:parseFloat(document.factura.lista1[i].value);
val1tot = val1 * document.factura.categoa.value;
val1tot2 += val1tot;
}
El html sería algo así como:
Código HTML:
<select size='1' name='lista1' onChange=Sumar()>
<option selected value=''></option>
<option value='1'>1</option>;
<option value='2'>2</option>;
<option value='3'>3</option>;
</select>

<select size='1' name='lista1' onChange=Sumar()>
<option selected value=''></option>
<option value='1'>1</option>;
<option value='2'>2</option>;
<option value='3'>3</option>;
</select> 
  #2 (permalink)  
Antiguo 27/02/2009, 10:56
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: Cambiar de nombre.value a getElementById

¿Cuál es la relación entre tomar el valor por el nombre o por el id y pasarlos por PHP? Además, los select que muestras no tienen id
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 27/02/2009, 11:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 39
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Cambiar de nombre.value a getElementById

Son fragmentos de un código muy largo de 600 lineas. Ocurre que es un script que suma valores de los sectcs y después yo quiero pasar la suma total y los elementos que suman por PHP, ya que esos elementos surgen en ese código como consultas de php.
Ej:
Select --> Manzana (2), Pera (5), Albaricoque (3)
Select --> Banana (1), Kaki (6)

Si yo selecciono la manzana del primer select y la banana del segundo me da 3.
yO QUIERO pasar por post:
Manzana 2, Banana 1 y total 3

Me han dicho en el foro de PHP que eso debo hacerlo cambiando el javascript para que me coja los elementos por el id y no por el name.
Los fragmentos que he puesto son como está ahora, lógicamente si tengo que cogerlos por id pues llamo a los selects por ejemplo:

Código HTML:
<select size='1' name='compra1' id='lista1' onChange=Sumar()>
<option selected value=''></option>
<option value='1'>1</option>;
<option value='2'>2</option>;
<option value='3'>3</option>;
</select>

<select size='1' name='compra2' id ='lista1' onChange=Sumar()>
<option selected value=''></option>
<option value='1'>1</option>;
<option value='2'>2</option>;
<option value='3'>3</option>;
</select> 
La duda es, cómo quedaría el javascript? Lo pongo entero:

Código HTML:
<SCRIPT LANGUAGE=JavaScript>
function Sumar() {
var val1;
var val2;
var val3;
var val1tot2 = 0;
var val2tot2 = 0;
var val3tot2 = 0;
var val1tot;
var val2tot;
var val3tot;
var darma;


for (i=0; i<document.factura.lista1.length; i++){
val1 = (! parseFloat(document.factura.lista1[i].value))?0:parseFloat(document.factura.lista1[i].value);
val1tot = val1 * document.factura.categoa.value;
val1tot2 += val1tot;


val2 = (! parseFloat(document.factura.lista2[i].value))?0:parseFloat(document.factura.lista2[i].value);
val2tot = val2 * document.factura.categob.value;
val2tot2 += val2tot;

val3 = (! parseFloat(document.factura.lista3[i].value))?0:parseFloat(document.factura.lista3[i].value);
val3tot = val3 * document.factura.categoc.value;
val3tot2 += val3tot;

document.factura.tot.value = val1tot2+val2tot2+val3tot2;
darma = document.factura.tot1.value;
document.factura.tot2.value = darma - document.factura.tot.value;
var count = document.factura.tot2.value;

var parent = document.getElementById( 'depper' );
parent.innerHTML="<div>" + count +"</div>"; 

if (document.factura.tot2.value < 0){
alert ('No tienes suficientes puntos')
}
}

}

function validar2(){
if (document.factura.tot2.value < 0){
alert ('No tienes suficientes puntos')
}else{
alert ('Ahora se enviaria')
factura.submit();
}	
}
</SCRIPT> 
  #4 (permalink)  
Antiguo 27/02/2009, 12:20
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: Cambiar de nombre.value a getElementById

El id debe ser único en el documento, mientras que en el código que pusiste este se repite. Cuando tengas un id único para cada select puees recorrerlos usando un bucle for y sumarlos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 27/02/2009, 12:37
 
Fecha de Ingreso: febrero-2008
Mensajes: 39
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Cambiar de nombre.value a getElementById

Entonces replanteemos el problema de otra forma,.
Si tengo el siguiente for:

Código HTML:
for (i=0; i<document.factura.lista1.length; i++){

val2 = (! parseFloat(document.factura.lista2[i].value))?0:parseFloat(document.factura.lista2[i].value);
val2tot = val2 * document.factura.categob.value;
val2tot2 += val2tot;
¿Cómo hago para que lista vaya cambiando con la variable?
Ej: lista1, lista2, lista3...

¿lista+i?
  #6 (permalink)  
Antiguo 27/02/2009, 12:42
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: Cambiar de nombre.value a getElementById

No entiendo lo que quieres hacer, pero bueno, ¿qué tal algo como ésto?:
Código javascript:
Ver original
  1. document.factura["lista" + i].value = ...;
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 27/02/2009, 12:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 39
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Cambiar de nombre.value a getElementById

Vale, muchas gracias, voy a replantear mi script de otra forma
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 12:18.