Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/10/2010, 11:57
Avatar de _cronos2
_cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 9 meses
Puntos: 310
Respuesta: Cálculo matemático

Sólo unas cositas:
Cita:
Iniciado por Perr0
<!-- ... -->
<script>
function calc(){
var a=document.getElementById("num1")
var b=document.getElementById("num2")
var c=document.getElementById("num3")
var d=document.getElementById("num4")
var e=document.getElementById("num5")
ereg=/\d$/ //sólo numeros

if(!a.value.match(ereg)) {alert("sólo numeros en a\"A\"");a.focus();return false}
if(!b.value.match(ereg)) {alert("sólo numeros en a\"B\"");b.focus();return false}
if(!c.value.match(ereg)) {alert("sólo numeros en a\"C\"");c.focus();return false}
if(!d.value.match(ereg)) {alert("sólo numeros en a\"D\"");d.focus();return false}
if(!e.value.match(ereg)) {alert("sólo numeros en a\"E\"");e.focus();return false}

formula1=a.value-b.value
formula1=formula1/7
formula2=c.value*1+d.value*1
formula2=formula2/5
var ress=(formula1-formula2)*e.value

document.getElementById("res").innerHTML=ress
}
</script>
<!-- ... -->
El código es bastante correcto, pero si no te importa te comento algunas líneas (las que están en rojo):
#1: Eso es un poco cierto, pero no del todo. Lo que le estás pidiendo es que al final de la cadena haya un número, por tanto hola1 pasaría. La solución es /^\d+$/. También existen otras funciones nativas para comprobar si son números o no, isNaN() e isFinite().
#2: La función match() sirve para crear un array con las coincidencias que haya de un patrón en una cadena. Por tanto, cuando lo usas en el if(), funciona si hay coincidencias porque al no estar vacío el array pasa, pero es más "correcto" usar test(), que devuelve un booleano.
#3: Así también funciona, pero es más fácil poner alert('sólo numeros en "B"'), ¿no?
#4: Cuando vas a sumar, restar, multiplicar o dividir una variable por ella misma, se puede poner como variable = variable + 2, pero, al menos para mí es más cómodo usar +=. Hay gente a la que le gusta más usar la primera forma porque es más clásica, pero te lo comento por si no lo sabías.
#5: 1*1=1, 2*1=2, 3*1=3,... n*1=n. Es inútil multiplicar un número por 1, basta con que sumes uno y otro.
#6: Como en #4 (/=).
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red