Foros del Web » Programando para Internet » Javascript »

variables globales

Estas en el tema de variables globales en el foro de Javascript en Foros del Web. este codigo de javascript que tengo es para sumar y restar dos valores que se digitan en una caja de texto mi pregunta es como ...
  #1 (permalink)  
Antiguo 04/02/2009, 17:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
variables globales

este codigo de javascript que tengo es para sumar y restar dos valores que se digitan en una caja de texto mi pregunta es como hago para que las variables sean globales y no tenga que escribirlas nuevamente en la siguiente function es decir la variable n1 y n2.
espero alguien pueda ayudarme gracias...

<html>
<head>
<script languaje="javaScript" type="text/javascript">
var nav4= window.Event ? true : false;
function num(e)
{
var key = nav4 ? e.which : e.keyCode;
return (key<=13 ||(key>=47 && key <= 57));
}

function suma(){
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);

resultado = n1+n2;
(document.getElementById("num3").value) = resultado;
}

function restar()
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
resultado = n1-n2;
(document.getElementById("num3").value) = resultado;
}

</script>
</head>
<body>
<form name="form1">
<table border="1" width="600" bgcolor="celeste">
<tr>
<td>
<table border="1" width="250">
<tr><td width="100">numero 1</td>
<td><input type="text" id="num1" onkeyPress="return num(event)"></td></tr>
<tr><td>numero 2</td>
<td><input type="text" id="num2" onkeyPress="return num(event)"></td></tr>
<tr><td>resultado</td>
<td><input type="text" id="num3" onkeyPress="return num(event)"></td></tr>
<tr><td colspan="2"><center>
<input type="button" value="Sumar" onclick="suma()"><input type="button" value="Restar" onclick="restar()"><input type="reset" value="Nuevo"></td></tr></td></tr>
<table></td>

</table>

</form>
</body>
</html>
  #2 (permalink)  
Antiguo 04/02/2009, 19:23
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: variables globales

Hola yiyis38 bienvenid a foros del web.

Cita:
como hago para que las variables sean globales y no tenga que escribirlas nuevamente en la siguiente function es decir la variable n1 y n2
tienes varias opciones segun se trate:

1.- Haz la declaracion de variable globales fuera de las funciones, al comienzo del script
Código:
<script>
var a=x
var b
...
fucntion tal()
...
2.- Si las defines dentro de una funcion, que no sea mediante var variable=x, definela solamente variable=x

3.- Tambien es posible pasar variables locales de una funcion a otra:
Código:
function tal()
var a=x
....
cual (a) // llama a la funcion cual pasandole a
....
function cual(v)
en v esta el valor de a
.... 
  #3 (permalink)  
Antiguo 06/02/2009, 09:21
 
Fecha de Ingreso: febrero-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: variables globales

hola gracias por tu respuesta yo se que cuando es variable globlal se colocan despues de abrir el script pero si las saco y darle suma me dice NaN

<html>
<head>
<script languaje="javaScript" type="text/javascript">
//variables globales
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);


var nav4= window.Event ? true : false;
function num(e)
{
var key = nav4 ? e.which : e.keyCode;
return (key<=13 ||(key>=47 && key <= 57));
}

function suma(){

resultado = n1+n2;
(document.getElementById("num3").value) = resultado;
}

function restar()
{
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
resultado = n1-n2;
(document.getElementById("num3").value) = resultado;
}

</script>
</head>
<body>
<form name="form1">
<table border="1" width="600" bgcolor="celeste">
<tr>
<td>
<table border="1" width="250">
<tr><td width="100">numero 1</td>
<td><input type="text" id="num1" onkeyPress="return num(event)"></td></tr>
<tr><td>numero 2</td>
<td><input type="text" id="num2" onkeyPress="return num(event)"></td></tr>
<tr><td>resultado</td>
<td><input type="text" id="num3" onkeyPress="return num(event)"></td></tr>
<tr><td colspan="2"><center>
<input type="button" value="Sumar" onclick="suma()"><input type="button" value="Restar" onclick="restar()"><input type="reset" value="Nuevo"></td></tr></td></tr>
<table></td>

</table>

</form>
</body>
</html>
  #4 (permalink)  
Antiguo 06/02/2009, 14:34
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 2 meses
Puntos: 15
Respuesta: variables globales

Puedes probar con esto:

<script>
function paso1(){
window['Mivariableglobalnueva'] = 'Lo que deseas cargar en tu variable';
}

function paso2(){
//El resultado
alert(Mivariableglobalnueva);
}
</script>


Recuerda que todo tiene un orden, incluso la ubicación de las funciones... Primero deben ir las funciones y luego se redefinen las variables, la lógica apunta a que no deberías realizar una operación pasando como parametro una variable que define sus datos unas lineas mas abajo que la operación.

Última edición por SPAWN3000; 06/02/2009 a las 14:44
  #5 (permalink)  
Antiguo 06/02/2009, 20:11
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 3 meses
Puntos: 9
Respuesta: variables globales

Cita:
var n1 = parseInt(document.getElementById("num1").value);
var n2 = parseInt(document.getElementById("num2").value);
Bueno en principio no se pueden asignar valores del html mientras no se ha cargado la pagina, ademas estas variables supongo que se modificaran asi que tampoco serviria cargarlas en el onload por que siempre tendrian el mismo valor que al cargar la pagina, en tu caso nada, por eso te sale NaN, lo raro es que no te de error.

Se me ocurre una idea, incluyendo estas lineas:

Código:
n1=document.form1.num1.value
n2=document.form1.num2.value
y ademas conviertes los inputs suma y resta en radio buton:

Código:
 
<input name="oper" type="radio" value="suma" checked>  
<input name="oper" type="radio" value="resta">
y al onchange del form lo mandas a otra funcion que hace las operaciones:

Código:
<form name="form1" onchange="opera()">
podria aparacer el resultado en num3 automaticamente añadiendo esta otra linea:

Código:
 
document.form1.num3.value=
(document.form1.oper[0].checked==true)?(n1+n2):(n1-n2)
la nueva funcion quedaria:

Código:
 
function opera()
{
n1=document.form1.num1.value
n2=document.form1.num2.value
document.form1.num3.value=
(document.form1.oper[0].checked==true)?(n1+n2):(n1-n2)
}
pudiendo eliminar las funciones suma y resta.

Última edición por programeitor; 06/02/2009 a las 20:27
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 09:13.