Foros del Web » Programando para Internet » Javascript »

Ayuda estoy iniciando con javascript

Estas en el tema de Ayuda estoy iniciando con javascript en el foro de Javascript en Foros del Web. Buen día... un saludo a todos y espero alguien pueda ayudarme porque realmente no he podido entender... Estoy haciendo un ejercicio sencillo de javascript con ...
  #1 (permalink)  
Antiguo 21/01/2010, 08:16
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
De acuerdo Ayuda estoy iniciando con javascript

Buen día... un saludo a todos y espero alguien pueda ayudarme porque realmente no he podido entender... Estoy haciendo un ejercicio sencillo de javascript con eventos. En mi formulario tengo cuatro cuadros de texto: en el primero se ingresara un nùmero, en el segundo un operador aritmetico (+ - * /) y en el tercero otro numero. El cuarto cuadro de texto es para ingresar el resultado. Adicional tengo un boton calcular que me realiza el calculo que yo ingrese en los cuadros de texto. El problema está en que no sè cómo referirme a estos objetos para el paso de parametros y valores.

Conseguì este codigo que me ha orientado:
<html>
<head>
<title>Página nueva 1</title>
<script>
function calcula(f) {
if (confirm("Estas seguro ?"))
f.resultado.value = eval(f.expresion.value)
else
alert("Hasta la vista.")
}
</script>
</head>

<body>

<form>
<p>Entre una expresión:
<input type="text" name="expresion" size="20">
<input type="button" value="Calcular" onClick="calcula(this.form)">
<br>
El resultado es : <input type="text" name="resultado" size="15">
</p>
</form>
</body>
</html>

Sin embargo he estado analizandolo y tratando de hacerlo segun mi estructura y no he podido. Les anexo lo que he realizado:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function calcula(a) {
if (a.operador.value = "+")
a.resultado.value = (a.num1.value + a.num2.value)
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Operaciones Aritm&eacute;ticas</title>
</head>

<body>
<form id="form1" name="form1" >
<label>
<input type="text" name="num1" />
</label>
<label>
<input type="text" name="operador" />
</label>
<label>
<input type="text" name="num2" />
</label>
<p>
<label>
<input name="Bot&oacute;n" type="button" value="calcular" onclick="calcula(this.form1)"/>
</label>
<label>
<input type="text" name="resultado" />
</label>
</p>
</form>

</body>
</html>

Sólo lo he realizado con un solo operador esperando que pueda correr... no sè en dònde está mi error y pues soy nueva en esto de la programaciòn y mucho más nueva con javascript y dreamweaver.

Espero realmente alguien pueda ayudarme, desde ya les agradezco un millón...

Carolina
  #2 (permalink)  
Antiguo 21/01/2010, 08:44
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Ayuda estoy iniciando con javascript

Hola Carolina,

a ver si te vale esto:
------------------------------------------
<script type="text/javascript">
function calcula()
{
//obtenemos los campos de texto num1 y num2 convertidos en números
var num1 = new Number(document.getElementById('num1').value);
var num2 = new Number(document.getElementById('num2').value);

//y lo que valen los campos de texto operador y resultado
var operador = document.getElementById('operador').value;
var resultado = document.getElementById('resultado').value;

//según el operador aritmético realizamos la operación
//switch evalua lo que vale el operador y en función de lo que valga realizamos operación
switch(operador)
{
case '+':
resultado.value = num1 + num2;
break;
case '-':
resultado.value = num1 - num2;
break;
case '*':
resultado.value = num1 * num2;
break;
case '/':
resultado.value = num1 / num2;
break;
default:
//si operador no coincide con ningún operador aritmético conocido devolvemos un texto en el
//campo de texto de resultado
resultado.value = 'operador incorrecto';
break;
}
}

</script>
----------------------------------------------------
y sustituye tus inputs por esto:
----------------------------------------------------
<label>
<input type="text" id="num1" name="num1" />
</label>
<label>
<input type="text" id="operador" name="operador" />
</label>
<label>
<input type="text" id="num2" name="num2" />
</label>
<p>
<label>
<input name="boton" type="button" id="boton" value="calcular" onclick="calcula()" />
</label>
<label>
<input type="text" id="resultado" name="resultado" />
</label>
----------------------------------------

asignar un id a los objetos html es bastante importante a la hora de trabajar con Javascript, pues la forma de obtener sus valores es através de getElementById (y si el objeto no tiene id no puede obtener los valores)

si tienes dudas por aquí andamos ;)

salu2
  #3 (permalink)  
Antiguo 21/01/2010, 08:58
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda estoy iniciando con javascript

ceSharp, eh probado tu codigo y no sale....... no obstante, haces muy complicada la solucion, puesto que con un eval al operador te ahorras tiempo haciendo un switch para cada caso.... ademas, que pasara si hubiera otro operador ??

aca te pongo la solucion carolina..... espero te sirva de mucho y de aqui en adelante tambien.

dale click a copiar o a ver original para que copies todo el texto.
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Operaciones Aritm&eacute;ticas</title>
  5. <script type="text/javascript">
  6. function calcula(a) {
  7.     var num1 = parseInt(a.num1.value); //valor entero del input num1
  8.     var num2 = parseInt(a.num2.value); //valor entero del input num2
  9.     var oper = a.operador.value; //valor del input operador
  10.     a.resultado.value = (oper) ? eval(num1 + oper + num2) : ""; //si existe un operador, evaluo la operacion, caso contrario en blanco
  11. }
  12. </head>
  13. <form id="form1" name="form1" >
  14. ingrese numero 1: <input type="text" name="num1" size="10" /><br /><br />
  15. ingrese operador: <input type="text" name="operador" size="4" /><br /><br />
  16. ingrese numero 2: <input type="text" name="num2" size="10" /><br /><br />
  17. <input type="button" name="calcular" value="Calcular" onclick="calcula(document.form1)" /><br /><br />
  18. resultado: <input type="text" name="resultado" size="10" />
  19. </form>
  20. </body>
  21. </html>

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 21/01/2010, 09:02
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda estoy iniciando con javascript

Entendí tu filosofia perfectamente... Sin embargo al realizarlo no me muestran los datos... Por algùn motivo... De verdad gracias por tu ayuda... ¿por qué no se muestran los datos?
  #5 (permalink)  
Antiguo 21/01/2010, 09:08
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda estoy iniciando con javascript

Masterojitos gracias... tu còdigo funciona perfectamente... entiendo un poco menos la filosofia... para què es la funciòn eval... en el ejercicio del cual me guiaba tambièn estaba... sin embargo no la entiendo... veo que tengo errores en mi còdigo pues no asignè a ninguna variable los valores de los input... Quiero enterderlo perfectamente para poder hacer cualquier ejercicio por mi misma gracias por tu ayuda fue valiosa al igual que la de Csharp...
  #6 (permalink)  
Antiguo 21/01/2010, 09:14
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda estoy iniciando con javascript

Disculpa... aparte del eval para què es el signo de "?" ...
Esta linea es la que me falta enteder:
a.resultado.value = (oper) ? eval(num1 + oper + num2) : "";
  #7 (permalink)  
Antiguo 21/01/2010, 09:19
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda estoy iniciando con javascript

Lsito! ya lo entendí:
eval transforma una cadena de caracteres y la calcula y el signo ? actua como condicional del operador, es decir, si el operador existe en el cuadro de texto concatena los valores de los tres cuadros y como es una expresion la calcula. ¿cierto?
  #8 (permalink)  
Antiguo 21/01/2010, 09:40
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Ayuda estoy iniciando con javascript

hay que ver el p.... lío que me he hecho en un momento y el que casi le hago a Carloina,jejejejeje

eso me pasa por no probar los códigos... (una y no más). Como recogia el valor de id=resultado con .value y luego le estaba diciendo que mostrara en la caja de texto resultado.value --> total que estaba indicandole dos veces .value, en fins un lío tremendo.

puse esa solución porque, aunque tenía más lineas de código, parecía más clara que usando eval, aunque si te digo la verdad no había caido en ella...

me la apunto! (ves, si al final hasta ayudando se aprende!)

saludos a todos!! ;)
  #9 (permalink)  
Antiguo 21/01/2010, 09:45
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Ayuda estoy iniciando con javascript

Cita:
a.resultado.value = (oper) ? eval(num1 + oper + num2) : ""; //si existe un operador, evaluo la operacion, caso contrario en blanco
como ahi te puse en comentario....... eso es identico a un:
if(condicion){
...
}else{
....
}


solo que mas directo:
(condicion) ? .... : .... ;

en tu caso, la condicion es si existe algun valor en el campo operador, de existir, hago la operacion con el eval(), de no existir, pongo el valor del resultado en blanco.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 21/01/2010, 12:07
 
Fecha de Ingreso: enero-2010
Mensajes: 10
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Ayuda estoy iniciando con javascript

Cita:
Iniciado por ceSharp Ver Mensaje
hay que ver el p.... lío que me he hecho en un momento y el que casi le hago a Carloina,jejejejeje

eso me pasa por no probar los códigos... (una y no más). Como recogia el valor de id=resultado con .value y luego le estaba diciendo que mostrara en la caja de texto resultado.value --> total que estaba indicandole dos veces .value, en fins un lío tremendo.

puse esa solución porque, aunque tenía más lineas de código, parecía más clara que usando eval, aunque si te digo la verdad no había caido en ella...

me la apunto! (ves, si al final hasta ayudando se aprende!)

saludos a todos!! ;)
Arreglé el tuyo así:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function calcula(a)
{
//obtenemos los campos de texto num1 y num2 convertidos en números
var num1 = parseInt(a.num1.value); //valor entero del input num1
var num2 = parseInt(a.num2.value); //valor entero del input num2
var operador = a.operador.value; //valor del input operador



//según el operador aritmético realizamos la operación
//switch evalua lo que vale el operador y en función de lo que valga realizamos operación
switch(operador)
{
case '+':
a.resultado.value = num1 + num2;
break;
case '-':
a.resultado.value = num1 - num2;
break;
case '*':
a.resultado.value = num1 * num2;
break;
case '/':
a.resultado.value = num1 / num2;
break;
default:
//si operador no coincide con ningún operador aritmético conocido devolvemos un texto en el
//campo de texto de resultado
a.resultado.value = 'operador incorrecto';
break;
}
}

</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<label>
<input type="text" id="num1" name="num1" />
</label>
<label>
<input type="text" id="operador" name="operador" />
</label>
<label>
<input type="text" id="num2" name="num2" />
</label>
<p>
<label>
<input name="boton" type="button" id="boton" value="calcular" onclick="calcula(document.form1)" />
</label>
<label>
<input type="text" id="resultado" name="resultado" />
</label>



</body>
</html>
  #11 (permalink)  
Antiguo 22/01/2010, 03:03
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: Ayuda estoy iniciando con javascript

bien Carolina! ;)

funciona perfectamente. Aunque la opción de masterOjitos con EVAL es mejor; más sencilla, menos líneas, más efectiva, etc.

salu2

Etiquetas: Ninguno
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:31.