Sumas y multiplicaciones

Quisiera saber como se hace lo siguiente: Tengo este script: </SCRIPT><SCRIPT LANGUAGE=JavaScript>
function Sumar() {
var val1;
var val2;
var val3;
val1 = (! ParseInt(document.formulario.sum1.value))?0:parseInt(document.formulario.sum1.value);
val2 = (! ParseInt(document.formulario.sum2.value))?0:parseInt(document.formulario.sum2.value);
val3 = (! ParseInt(document.formulario.sum3.value))?0:parseInt(document.formulario.sum3.value);
document.formulario.tot.value = val1 * ((val2 * val4) + val3);
}
</SCRIPT>
El problema es que quiero que val2 se multiplique a la vez por otro valor (val4), pero ese valor depende de una selección que hagamos en un menu/list. Me explico, supongamos que hay un menu/list con tres valores: casa, perro y gato, de manera que si eliges casa, val4 fuese 1, si eliges perro, val4 fuese 2 y si eliges gato, val4 fuese 3, por ejemplo. No se si me he explicado bien, pero es como decirle que val2 lo multiplique por val4, donde val4 si es casa sea 1, si es perro sea 2 y si es gato sea 3.
Respuesta
1
Pues realmente no acabo de entenderlo...
Porque si tienes una lista
<select name="lista">
<option value="1">Casa</option>
<option value="2">Perro</option>
<option value="3">Gato</option>
</select>
y haces val4=(! parseInt(document.formulario.lista.value))?0:parseInt(document.formulario.lista.value);
En val4 tendrás dicho número...
No sé si te he entendido bien... en caso que no sea esto, explícamelo mejor.
Pues eso es lo que necesitava, lo de val4=(! parseInt(document.formulario.lista.value))?0:parseInt(document.formulario.lista.value);
Ya lo he hecho y me hfunciona perfecto. Gracias y ya estaré en contacto contigo, porque todavía no he acabado la web. Un saludo

8 respuestas más de otros expertos

Respuesta
1
Te comento:
Viendo así a primera vista la función javascript que me has mandado, no te funciona porque no evalúas la operación. Lo único que tienes que poner para que te funcione es
document.formulario.tot.value = eval(val1 * ((val2 * val4) + val3));
Y creo que te funcionara, en caso de que no sea así dímelo y seguiré mirando hasta que lo consigamos.
Hola David. Vamos a ver, la página me funciona perfectamente tal y como la tengo ahora:
<html>
<head>
<title>Numero de caracteres y palabras on-line</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body {font-family:verdana;font-size:10px}
textarea,input
</style>
<SCRIPT>
function WordCountOnLine() {
// Función que nos va a contar el número de caracteres y de palabras del area de texto
// de un formulario
// Obtenemos el texto del area.
textoArea = document.formulario.area.value;
// El numero de caracteres es su longitud
// Eliminamos los caracteres en blanco del inicio y del final.
// Como no tenemos funciones del tipo trim, rtrim y ltrim usamos
// expresiones regulares
inicioBlanco = /^ / // El ^ indica principio de cadena
finBlanco = / $/ // El $ indica final de cadena
variosBlancos = /[ ]+/g // El global (g) es para obtener todas las posibles combinaciones
textoArea = textoArea.replace(inicioBlanco,"");
textoArea = textoArea.replace(finBlanco,"");
textoArea = textoArea.replace(variosBlancos," ");
// Creamos un array con las diferentes palabras. Teniendo en cuenta que la separación
// entre palabras es el espacio en blanco.
textoAreaDividido = textoArea.split(" ");
numeroPalabras = textoAreaDividido.length*1;
formulario.palabras.value = numeroPalabras;
setTimeout("WordCountOnLine();",300);
//alert (numeroCaracteres + tC +"\n" + numeroPalabras + tP);
}
</SCRIPT><SCRIPT LANGUAGE=JavaScript>
function Sumar() {
var val1;
var val2;
var val3;
val1 = (! parseInt(document.formulario.palabras.value))?0:parseInt(document.formulario.palabras.value);
val2 = (! parseInt(document.formulario.sum2.value))?0:parseInt(document.formulario.sum2.value);
val3 = (! parseInt(document.formulario.sum3.value))?0:parseInt(document.formulario.sum3.value);
document.formulario.tot.value = val1 * (val2 + val3);
}
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" text="#000000" onLoad="WordCountOnLine();">
<form name="formulario">
<br>
<textarea name="area" style="font-family:verdana;font-size:12px;" rows=10 cols=50></textarea><br>
<input name="palabras" style="font-family:verdana;font-size:12px;" type="text" size=4>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td><br>
<input type=text value="Item 2"></td>
<td><input name=sum2 size=5 onChange=Sumar()></td>
</tr>
<tr>
<td><br>
<input type=text value="Item 3"></td>
<td><input name=sum3 size=5 onChange=Sumar()></td>
</tr>
<tr><td align=right><input type=button value="Total:" onClick=Sumar()></td>
<td><input name=tot size=6></td>
</form>
</body>
</html>
El problema es que tengo que multiplicar val2 por otro valor, val4, cuyo valor no es fijo, sino que depende de un list/menu, donde cada opción del list/menu hace que val4 tenga un valor diferente. Es es mi duda, como hacer que val4 tenga un valor dependiendo del list menu
Perdona si te había entendido mal la pregunta, en cualquier caso, tratare de contestarte a ver si acierto esta vez :-)))):
Parece ser que el problema que tienes es como acceder al valor que tienes en el lis menu, ok, se hace de la siguiente forma(te lo pongo en script aparte):
<script>
var val4;
var n;
n=document.forms[0].nombre_listMenu.selectedIndex;
val4=document.forms[0].nombre_ListMenu(n).value;
</script>
De esta forma podrás tener almacenado en val4 el valor que tienes en el ListMenu y luego multiplicarlo por val2.
Espero que sea esto lo que necesitas, si no es así ya sabes en donde estoy.
Ya lo he solucionado. Lo he tenido que poner asi: val4 = (! parseInt(document.formulario.lista.value))?0:parseInt(document.formulario.lista.value);
De todas maneras muchas gracias
Respuesta
1
A ver, según lo que me dices val4 es el name de un SELECT, ¿no?
Pues bien, en el botón de submit en vez de hacerlo submit, hazlo tipo button. Entonces en el onClick llama a esta función que tienes aquí y al final le haces el submit. Así val4 ya vale lo que tiene que valer y puedes hacer todas las operaciones que quieras con el...
Dani
Ya lo he solucionado. Lo he tenido que poner asi: val4 = (! parseInt(document.formulario.lista.value))?0:parseInt(document.formulario.lista.value);
De todas maneras muchas gracias
Respuesta
1
Si me he enterado bien, ¿lo qué quieres es que val4 tenga de valor lo que se haya seleccionado en el menú/list, no?
Puedes utilizar algo como esto:
var fr=document.forms[0];
val4 = fr.nombreformulario.options[fr.nombreformulario.selectedIndex].value;
Y después realizas la operación matemática. Con esto, obtienes en val4 el valor de la opción seleccionada en el menu/list.
Respuesta
1
Supongo que donde tienes duda es en el menu desplegable osea que te lo explico:
El valor de la opción que se haya escogido es:
valor = document.nombreform.D1[document.nombreform.D1.selectedIndex].value
donde nombreform es el nombre de tu formulario y D1 es el nombre de tu menu desplegable. document.form.D1[] es un array que contiene todas las opciones de D1 (la 1º es 0, la 2º es 1...). document.nombreform.D1.selectedIndex es el nº de opcion seleccionada en el D1.
De manera que si pones que val4 = valor;, tendrás lo que buscas.
Respuesta
1
Por lo que he entendido, tu problema consiste en actualizar el valor de val4 en función del valor que hay en cada momento en un select (si no es así ya sabes, aclaración y re-email =P)
He aquí mi solución:
<FORM>
<SELECT NAME="REGION" ONCHANGE="document.write('Opcion: '+ this.form[0].value)">
<OPTION VALUE="0">Selecciona objeto</OPTION>
<OPTION VALUE="Perro">Perro</OPTION>
<OPTION VALUE="Tortuga">Tortuga</OPTION>
<OPTION VALUE="Error! es persona no objeto!">Claudia Shiffer</OPTION>
</SELECT>
</FORM>
Utiliza el evento onclick del SELECT para tomar el valor activo en ese momento he imprimirlo en pantalla, pero igual podría ponerlo en una variable, mostrarlo con un alert o usarlo como parámetro para una dirección web...
Ya me contaras si te sirvió de algo, hasta lego! ;)
Respuesta
1
De nuevo pedroche.
Para poder hacer lo que indicas, debes incluir en tu formulario una lista desplegable que incluya el nombre del campo "sum4" y cada uno de los valores individuales.
En una lista desplegable cada opción tiene una parte de texto, que es la que se suele mostrar en pantalla, y una parte oculta, que incluye el valor asignado a cada opción. Cuando seleccionas una opción el valor de la opción seleccionada será el valor asignado al campo del formulario.
Es decir deberías incluir algo como:
<select size="1" name="sum4">
<option value="1">casa</option>
<option value="2">perro</option>
<option value="3">gato</option>
</select>
Después, para acceder al valor de este campo tan sólo deberás emplear algo como:
val4=document.formulario.sum4.value
Y ya podrás emplear el valor val4 en tus cálculos.
Espero que esto te sirva de ayuda para solucionar tu problema. Como siempre, indicarte que si algo no te ha quedado claro, no dudes en preguntármelo.
Respuesta
1
Te adjunto el código de como quedaría. Es fácil de entender. Tan solo tienes que crear un SELECT (desplegable) en el que cada opción (OPTION) tiene un valor y una etiqueta, de manera que si pones value="1" se vea PERRO, etc. Luego usas ese valor del SELECT como un valor de un objeto de un formulario document. Formulario. Val4. value. Es bueno hacer una conversión a entero de todas formas. En el código lo tienes claro todo. Saludotes, Nacho.
<html>
<head>
<title>Untitled</title>
<SCRIPT LANGUAGE=JavaScript>
function Sumar() {
var val1;
var val2;
var val3;
val1 = (! parseInt(document.formulario.sum1.value))?0:parseInt(document.formulario.sum1.value);
val2 = (! parseInt(document.formulario.sum2.value))?0:parseInt(document.formulario.sum2.value);
val3 = (! parseInt(document.formulario.sum3.value))?0:parseInt(document.formulario.sum3.value);
document.formulario.tot.value = val1 * ((val2* parseInt(document.formulario.val4.value)) + val3);
}
</SCRIPT>
</head>
<body>
<form name="formulario">
<select name="val4">
<option value="1">Perro - 1</option>
<option value="2">Casa - 2</option>
<option value="3">Gato - 3</option>
</select>
<br><br>
val1<input type="text" name="sum1">  
val2<input type="text" name="sum2">  
val3<input type="text" name="sum3">  
total<input type="text" name="tot">
<br><br>
<input type="button" value="calcular" onClick="Sumar();">
<br><br>
</form>
</body>
</html>
Respuesta
-1
Bueno no entiendo bien la pregunta, así es que explica el algoritmo que deseas seguir y yo lo adecuare a java script, o y los parseint son inútiles en este tipo de operación, la conversión de datos es automática.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas