Foros del Web » Programando para Internet » Javascript »

Función con parámetros variables

Estas en el tema de Función con parámetros variables en el foro de Javascript en Foros del Web. Hola a todos. A ver tengo un problema bastante grande, espero que me lo solucionen. Tengo que realizar un ejercicio en Javascript en que tiene ...
  #1 (permalink)  
Antiguo 03/10/2011, 02:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Función con parámetros variables

Hola a todos.

A ver tengo un problema bastante grande, espero que me lo solucionen. Tengo que realizar un ejercicio en Javascript en que tiene que pedir al usuario cuantos parámetros va a tener la función, el valor de cada uno, llamarla y hacer su suma.

De momento he realizado una función llamada "calculardatos()" que hace la suma de X parámetros. Por ejemplo en el evento onclick de un formulario hago:

onclick="calculardatos(2,3,4)"... y da correcto, o sea 8.
onclick="calculardatos(2,1,5,4,3,6)... y también da correcto, es decir, 21

Ahora me falta la parte de como hacer que el usuario entre el numero de parámetros (o sea "3" o "4" los que sean que ya está hecho) y luego un valor para cada uno (lo hice mediante prompts dentro de un bucle for).

Pero como llamar al evento (en este caso "onclick") para que por ejemplo el usuario haya entrado "3" parámetros, con respectivamente (p. ej) "2" "3" y "2".
Les pongo lo que llevo hasta ahora.

Código:
<script>

var nParamsGlobal = 0 ;
var cadena = "javascript:calculardatos(";



function calculardatos (){
	var suma = 0;
	var numeros = calculardatos.arguments[0];
    
	document.write("Invocación recibida" + "<br/>");
	
    for (x=0; x<arguments.length; x++)	{
		suma = suma + numeros; 
		numeros = calculardatos.arguments[x+1];
    	//document.write(arguments[x] + "<br/>");
    }
	
	document.write("<br>" + suma);
}



nParamsGlobal = prompt("Introduzca un numero de parámetros:");

for (var cont = 0; cont < nParamsGlobal; cont++) {
	nParamActual = prompt("Introduzca el valor del "+(cont+1)+" parametro:");	
}


document.write(cadena);

//calculardatos(1,2,3);

</script>
</head>

<body>
<form>
<br />
	<input type="button" onclick= "calculardatos(1,2,3)" value="Activar Función">
    
</form>
Si esta forma es erronia me gustaria consejo para llevar a cabo tal ejercicio, o sea, pedir por pantalla el numero de parametros, el valor de cada uno y que luego se llame a la función y le haga la suma y la muestre por pantalla.

Mil gracias!
  #2 (permalink)  
Antiguo 03/10/2011, 03:04
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función con parámetros variables

buenas,
la idea esta más o menos bien pensada pero la ejecucción esta mal. por ejemplo, en el bucle que pide los valores siempre estas guardando en la misma variable de modo que los valores anteriores se pierden. deberías usar un array y llenarlo por cada ciclo. luego para pasar esos valores a la función, puedes hacer dos formas. la más simple pero asumo que no entenderás su funcionamiento, es usando el método apply de la función calculardatos. tu no lo has definido pero dicho método es existe en todas las funciones. lo que este método hace es aplicar dicha función a un objeto con ciertos parámetros. en este caso, no vas aplicar la función a un objeto por lo cual le pasas null como primer argumento de apply, y como segundo argumento le pasas el array.

la otra forma es más fácil de comprender pero requirirá que modifiques la función para que en lugar de recibir parametros variables, que siempre reciba un array. básicamente la modificación sería agregar un código para recorrer el array y realizar la suma. o sea, lo mismo que estas haciendo con arguments pero con el array.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 03/10/2011, 09:30
 
Fecha de Ingreso: octubre-2011
Mensajes: 3
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Función con parámetros variables

Muchas gracias Zerokilled. Me ha servido tanto que ya funciona :)

Saludos!

Etiquetas: variables
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 03:09.