entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Cómo puedo sumar los valores de un select, si el value es un string?

Un ejemplo sería como este:

<input type="submit" name="sumar" id="sumar" value="Calcular Tiempo" onclick="numerogoldman()">
<input type="text" name="cajaresult" id="cajaresult" value="" size="4" disabled="true"> minutos
<form name="elegir">
<select name="goldman" multiple="multiple" onchange="numerogoldman()">
<option value="A">Edad >70 años</option>
<option value="B">Infarto menor a 6 meses</option>
<option value="C">ECG: ritmo no sinusal o extrasístoles ventriculares</option>

</select>
</form>
<script>
function numerogoldman()
{
var lista = document.elegir.goldman.selectedOptions;
var total=0;
for(var i=0;i<lista.length;i++)
{
valorg=lista[i].value;
if (valorg=="A")
total+=5;
if (valorg=="B")
total+=10;
if (valorg=="C")
total+=7;

}
console.log(total);
$('#cajaresult').val(resultado);
}

2 Respuestas

3votos

cobasESP Puntos18900

¿Porque el value tiene que ser una letra? Yo haría esto:

<form name="elegir">
<select name="goldman" multiple="multiple" onchange="numerogoldman()">
<option value="5">Edad >70 años</option>
<option value="10">Infarto menor a 6 meses</option>
<option value="7">ECG: ritmo no sinusal o extrasístoles ventriculares</option>

</select>
</form>
<script>
function numerogoldman(){
 var lista = document.elegir.goldman.selectedOptions;
 var total=0;
 for(var i=0;i<lista.length;i++){
  valorg=lista[i].value;
  total= total + valorg;
 }
 console.log(total);
}

Jurundio comentado Diciembre 9, 2016

Es que lo utilizo la letra para mandarlo en otro formulario, y ocupo sumar para tener un número aparte.

cobasESP comentado Diciembre 9, 2016

Pues como lo estas haciendo tu estaría bien, puedes coger el valor de la letra para enviarlo a otro formulario pero antes las filtras con unos if para sacar el otro valor.

Jurundio comentado Diciembre 9, 2016

¿Pero cómo pasaría si quiero sumar los tres select en un formulario? Y crear el script como ponía, para sustituir por un numero sean sumado según el option seleccionado. Por ejemplo:

<form name="elegir">
<option value="A">Edad >70 años</option>
<option value="B">Infarto menor a 6 meses</option>
<option value="C">ECG: ritmo no sinusal o extrasístoles ventriculares</option>

<option value="A">Edad >70 años</option>
<option value="B">Infarto menor a 6 meses</option>
<option value="C">ECG: ritmo no sinusal o extrasístoles ventriculares</option>

<option value="A">Edad >70 años</option>
<option value="B">Infarto menor a 6 meses</option>
<option value="C">ECG: ritmo no sinusal o extrasístoles ventriculares</option>
</form>

1voto

elporfirio Puntos2440

Hola, si necesariamente tiene que se una letra, esta bien lo que haces. Ahora que si añadimos la parte de que puedes tener más de una Lista, y más de una opción elegida, resumo un algoritmo sencillo.

  1. Obtener todas las listas (select)
  2. Agregar un evento que al cambiar se active algo para saber que cambio
  3. Almacenar los valores elegidos de las listas (arrays y objetos)
  4. Sumar los valores elegidos

Algunas variantes:
Es que el usuario puede elegir mas de una opción, y cambiar su decisión en cualquier momento.

Por eso, debemos volver a buscar todos los seleccionados cada vez. Pero no necesariamente volver a buscar en todas las listas si no solo en la seleccionada.

Y bueno como el código es algo largo..

Aqui esta el demo funcional:

DEMO TOTALMENTE EN JS, sin JQUERY NI NAAAAA

https://jsfiddle.net/elporfirio/okafjenu/

Quizá esperabas un código más corto, pero en realidad antes de todo código siempre genera un algoritmo, de ahí cualquiera te puede ayudar.

Saludos.

Por favor ingresa o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta