Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] una funcion que vaya sumando pero que se mantenga estatica y no cambie su valor

Estas en el tema de una funcion que vaya sumando pero que se mantenga estatica y no cambie su valor en el foro de Javascript en Foros del Web. Hoa chicos que tal pues bueno tengo una preguta: Uds de casulidad sabran de un tipo de variable algo asi como en php seria static ...
  #1 (permalink)  
Antiguo 17/07/2013, 22:00
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
una funcion que vaya sumando pero que se mantenga estatica y no cambie su valor

Hoa chicos que tal pues bueno tengo una preguta: Uds de casulidad sabran de un tipo de variable algo asi como en php seria static en la cual yo le asigno parametros y esta los va sumando poco a poco por que como yo se los voy a enviar de difenrentes lados no de un solo sitio. Entonces lo que necesito es algo estatico y que aasi se mantenga hasta que yo quiera cambiarlo cuando llegue a su tope.

espero me hayan entendido :D
  #2 (permalink)  
Antiguo 18/07/2013, 02:08
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: una funcion que valla sumando pero que se mantenga estatica y no cambie su

Lo único que entendí es que necesitas emplear/emular un modificador de accesso de tipo static en JavaScript...pero no entendí para que....haber si lo podes aclarar un poco la idea, haber si se te puede dar una mano
  #3 (permalink)  
Antiguo 18/07/2013, 07:17
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: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

buenas,
en javascript no existe ese concepto de variable estática como en php. lo más similar que puedes hacer es crear una variable en un closure y desde otro función manipular dicha variable. sin embargo, lo que no puedes hacer es desde la función inicializar la variable en cada invocación. la variable la inicializas una sola vez en el closure.

Código:
var sum = (function(init){ // esta funcion anonima crea un closure ;
return function(a){
init += a;
return init;
};
})(0); // el parametro es el valor al que se inicializa la variable dentro del closure ;

console.log(sum(3)); // imprime 3
console.log(sum(10)); // imprime 13
console.log(sum(-2)); // imprime 11
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 18/07/2013, 19:13
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

mas o menos seria asi zerokilled y ipraetoriux lo que neceito es lo siguente :

tengo una funcion que envia muchas imagenes a un archivo php. Entonces tengo una sola funcion que se llama progres y esta muestra el avance de todos lo archivos el problema es que al ser una para todos se pone como loca y a los usuarios los confunde por que por ejemplo en una subida va 50% y despues se muestra 20% despues otro progreso que es de 80% asi locamente entonces quiero crear una funcion que lo que haga es recivir datos de todos lados y mustre el porcentaje pero global de la subida de archivos. con eso es mas entendible. Y no quiero hacer una barra de progreso para todos los archivos ya que si pone muchos se llana la venta de ellos y nooo asi no :D espero me hayan entendido
  #5 (permalink)  
Antiguo 19/07/2013, 06:29
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: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

tu consulta inicial nada tiene que ver con lo que estás planteando ahora. se te respondió según tu consulta inicial. si necesitas ayuda con otra parte, debes ser más explícito en tu descripción, y más importante aún, muestre el código que tienes para poder orientarte.

por lo pronto, se me ocurre que en un array agregues el porcentaje de cada archivo que se van subiendo. luego lo sumas en una variable. aparte, multiplicas la longitud del array por cien (100). finalmente, la suma la divides por la multiplicación, y multiplicas por cien. el resultado será un porcentaje promedio de todos los uploads. ejemplo:
archivo1 35%
archivo2 20%

(35 + 20) ÷ 200% = 27.5%
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 19/07/2013 a las 06:44
  #6 (permalink)  
Antiguo 22/07/2013, 10:23
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

si lo que dices es muy cierto ya que pense hacerlo con la funcion statica que tu hiciste pero tienes toda la razon no me funciono. Lo estoy haciendo con los arrays como te entendi y creo que es la mejor forma pero no me esta funcionando por que el array no guarda los datos bn codigo:
Código Javascript:
Ver original
  1. function envio3(datos, ciclo){ /// por cada envio llama esta funcion y ciclo es el campo del array en el cual envio el porcentaje de la subida
  2.     var oReq=new XMLHttpRequest(), all=0;
  3.     oReq.upload.addEventListener('progress',function(e){
  4.         var prog=parseInt(Math.round((e.loaded / e.total)*100));
  5.         all=prog;
  6.         //console.log(ciclo+' '+prog);
  7.         //console.log(all);
  8.         prigress(all, ciclo);
  9.        
  10.     }, false);
  11.     oReq.open('POST', '../Uploads/subirfotos.php', true);
  12.     oReq.onreadystatechange = function(){ if(this.readyState===4){
  13.        
  14.     }
  15.     }
  16.     oReq.send(datos);
  17. }
  18.  
  19. function prigress(all, i){
  20.     var p=$('#progresito > div'), a=new Array() , b=0, c=0, todo=0;
  21.     console.log(all+' '+i);
  22.     a[i]=all;
  23.     for(; b<i; b++){
  24.         //console.log(a);
  25.         //if(all[b]!==undefined){
  26.             c=c+a[b];
  27.             console.log(a[b]+' '+i);
  28.         //}
  29.     }
  30.     //todo=c/envios;
  31.     //console.log(todo);
  32.     /*p.html(prog+"%");
  33.     p.css({'width':prog+"%"});*/
  34. }

y este es el sesultado en consola con 4 archivos:
100 0 striker.js:308
3 1 striker.js:308
undefined 1 striker.js:314
100 1 striker.js:308
undefined 1 striker.js:314
46 2 striker.js:308
undefined 2 striker.js:314
undefined 2 striker.js:314
24 3 striker.js:308
undefined 3 striker.js:314
undefined 3 striker.js:314
undefined 3 striker.js:314
100 2 striker.js:308
undefined 2 striker.js:314
undefined 2 striker.js:314
76 3 striker.js:308
undefined 3 striker.js:314
undefined 3 striker.js:314
undefined 3 striker.js:314
100 3 striker.js:308
undefined 3 striker.js:314
undefined 3 striker.js:314
undefined 3

el undefinided es el valor de la subida y el siguiente valor es el campo del array si pudieran ayudar a ver en donde tengo el error? gracias :D
  #7 (permalink)  
Antiguo 23/07/2013, 13:06
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: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

voy asumir que si estas subiendo archivos por ajax entonces estás usando XMLHttpRequest2 o estás usando algún navegador (chrome, firefox) que permite el envio por XMLHttpRequest (level 1). (nota de redacción: en realidad XMLHttpRequest 1 no admite envio de archivo. en realidad el estándar entró nuevamente a la etapa WorkingDraft y se publica bajo el mismo nombre.) según lo que pude ver, no hace falta reunir todos los datos. no al menos si envias varios archivos bajo el mismo objeto XMLHttpRequest. si tienes varios objetos XHR, ahí si tendrías que reunir todos los datos para calcular el overall de datos subidos. en chrome y firefox me funciona este simple ejemplo:

Código:
var http = new XMLHttpRequest();
http.open('post', url);
http.upload.addEventListener('progress', function(event){
console.log(event.loaded / event.totalSize * 100 + ' %');
}, false);
http.send(new FormData(document.forms[0]));
en este ejemplo estoy usando como base un formulario que tiene varios campos INPUT FILE. en el evento, totalSize representa la suma en bytes de todos los archivos a enviar, aunque no se si también incluye los datos de los demás campos (INPUT TEXT, TEXTAREA, SELECT, etc).
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 23/07/2013 a las 17:50
  #8 (permalink)  
Antiguo 23/07/2013, 16:22
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: una funcion que vaya sumando pero que se mantenga estatica y no cambie su

pues creo que ya lo silucione pero no haciendo lo que aca estoy pidiendo. Tenia de dos o hacer esto de sumar todos lo progresos y divisdor por la cantidad de archivos o hacer un script que me enviara uno por uno en vez de todos los archivos pues bn solucione mas rapido el segundo que es enviar uno por uno con eso si enviarian en orden.

De todas maneras gracias amigo :D

y estoy enviando archivos con el XMLHttpRequest(); con FormData y es solo archivos sin texto

Etiquetas: estatica, funcion, php, sumando, valor, variable
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 20:40.