Foros del Web » Programando para Internet » Javascript »

Acciones con parámetros recibidos en function JS

Estas en el tema de Acciones con parámetros recibidos en function JS en el foro de Javascript en Foros del Web. Muy buenas señores, tengo una consulta que hacerles ya que no se como tratar lo siguiente: Supongamos que tengo un listado de Archivos y Videos, ...
  #1 (permalink)  
Antiguo 28/03/2011, 10:15
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Acciones con parámetros recibidos en function JS

Muy buenas señores, tengo una consulta que hacerles ya que no se como tratar lo siguiente:

Supongamos que tengo un listado de Archivos y Videos, éstos son mostrados mediante un FOR en PHP para los Archivos, y otro FOR para los videos, imprimiendo por ejemplo el siguiente TAG para cada elemento: (obviamente voy a reducir el codigo para que les sea mas agradable a la vista)

VIDEO 1

Código:
<input onclick="return confirmar('VIDEOS/webflv1301323145652.flv', '0');">
VIDEO 2

Código:
<input onclick="return confirmar('VIDEOS/webflv2345652.flv', '1');">

ARCHIVO 1

Código:
<input onclick="return confirmar('ARCHIVOS/imagen.jpg', '0');">

ARCHIVO 2

Código:
<input onclick="return confirmar('ARCHIVOS/imagen2.jpg', '1');">


Bien, como pueden observar simplemente son botones que al pulsarlos llaman a la función "confirmar()" de JS pasandole 2 parámetros "confirmar( ruta, id )"


Bueno llegando a la conclusión del problema, todo funciona correcto solo que antes lo hacía solo con ARCHIVOS y no con VIDEOS, algo que siempre ha ido bien y al implementar el FOR de los videos ya se ha fastidiado.


El Code JS "ANTIGUO" recibía los parámetros así:

Código:
function confirmar(archivoEliminar, i)
{
  if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.')) 
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?'+location.search.substring(1), true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    conexion.send("&dato="+archivoEliminar);

  } else {
	conexion='';
  }


como pueden observar la función recibe las 2 variables que corresponden a confirmar( ruta, id ) o bien, confirmar( archivoEliminar, i )

Al querer implementar los videos quedaría confirmar( videoEliminar, v )


Obviamente aquí está el problema, nose como tratar cada cosa por separado, quiero hacer algo así: (Ya sé que está mal... :@)


JS NUEVO:

Código:
function confirmar(archivoEliminar, i, videoEliminar, v)
{
  if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.')) 
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?'+location.search.substring(1), true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    if (i) { conexion.send("&dato="+archivoEliminar); }
	if (v) { conexion.send("&dato="+videoEliminar); }

  } else {
	conexion='';
  }

Como pueden observar, intento capturar
Código:
function confirmar(archivoEliminar, i, videoEliminar, v)
y más abajo ven ésto:
Código:
if (i) { conexion.send("&dato="+archivoEliminar); }
	if (v) { conexion.send("&dato="+videoEliminar); }

Lo que quiero hacer es que en función de que haya invocado " i " o " v " haga una cosa u otra.


Espero que me entiendan sino no duden en preguntar. Gracias nuevamente y espero sus respuestas. Salu2
  #2 (permalink)  
Antiguo 28/03/2011, 10:35
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Acciones con parámetros recibidos en function JS

No entiendo muy bien cual es el problema si siempre envias la ruta, en todo caso si queres hacer algo diferente dependiendo del tipo de archivo, por el nombre del mismo podes deducir que tipo de archivo es, ya que empiezan por ARCHIVO y VIDEO respectivamente, o sino queres recaer en el nombre del fichero podes pasar a la función un tercer parametro que sea justamente el tipo, algo así:

Código Javascript:
Ver original
  1. function confirmar(archivoEliminar, i, tipo) {
  2.    ...
  3.    if('v' == tipo) {
  4.       ...
  5.    } else if('f' == tipo) {
  6.       ...
  7.    }
  8.    ...
  9. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 28/03/2011, 16:21
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Acciones con parámetros recibidos en function JS

Cita:
Iniciado por masterpuppet Ver Mensaje
No entiendo muy bien cual es el problema si siempre envias la ruta, en todo caso si queres hacer algo diferente dependiendo del tipo de archivo, por el nombre del mismo podes deducir que tipo de archivo es, ya que empiezan por ARCHIVO y VIDEO respectivamente, o sino queres recaer en el nombre del fichero podes pasar a la función un tercer parametro que sea justamente el tipo, algo así:

Código Javascript:
Ver original
  1. function confirmar(archivoEliminar, i, tipo) {
  2.    ...
  3.    if('v' == tipo) {
  4.       ...
  5.    } else if('f' == tipo) {
  6.       ...
  7.    }
  8.    ...
  9. }

Saludos.

Perfecto masterpuppet, tu idea me hizo resolverlo y aquí lo dejo:


Al final el code quedó así:

Código:
var conexion;
function confirmar(Eliminar, datos, tipo)
{
  if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.')) 
  {
    conexion=HttpRequest();
    conexion.onreadystatechange = dibujar;
    conexion.open('POST','?'+location.search.substring(1), true);
    conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    conexion.send("&dato="+Eliminar);

  } else {
	conexion='';
  }
function dibujar()
{
  if(conexion.readyState == 4) {
  	if (tipo == '1') { $('div#eliminar'+datos).remove(); document.getElementById("proceso").innerHTML = 'Archivo eliminado'; }
	else if (tipo == '2') { $('div#veliminar'+datos).remove(); document.getElementById("vproceso").innerHTML = 'Video eliminado'; }
  } else {
    if (tipo == '1') { document.getElementById("proceso").innerHTML = 'Eliminando Archivo'; }
	else if (tipo == '2') { document.getElementById("vproceso").innerHTML = 'Eliminando Video'; }
	}
}
}

Gracias amigo. Nose como puedo caer en errores tan estúpidos... nuevamente, Gracias
  #4 (permalink)  
Antiguo 29/03/2011, 10:49
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Acciones con parámetros recibidos en function JS

Puedes mejorarlo así:
Código Javascript:
Ver original
  1. var conexion;
  2. function confirmar(Eliminar, datos, tipo)
  3. {
  4.   if(confirm('¿Realmente desea eliminar el archivo por completo? \n\n NOTA :: El archivo dejará de existir para siempre.'))
  5.   {
  6.     conexion=HttpRequest();
  7.     conexion.onreadystatechange = function()
  8.    {
  9.     if(conexion.readyState == 4) {
  10.      $('div#eliminar'+datos).remove();
  11.      document.getElementById("proceso").innerHTML = (tipo == '1' ?  'Archivo' : 'Video') + ' eliminado';
  12.     } else {
  13.      document.getElementById("vproceso").innerHTML = 'Eliminando ' + tipo == '1' ? 'Archivo' : 'Video';
  14.     }
  15.    };
  16.     conexion.open('POST','?'+location.search.substring(1), true);
  17.     conexion.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  18.     conexion.send("&dato="+Eliminar);
  19.   } else {
  20.    conexion='';
  21.   }
  22. }
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
  #5 (permalink)  
Antiguo 29/03/2011, 16:19
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Acciones con parámetros recibidos en function JS

O_o me parece expléndido tu código _cronos2!!

Es diferente forma de hacerlo pero como tu dices, optimizado :D


Aunque ahora mismo por lástima no puedo probarlo al 100% ya que me ha sucedido otro problema...


http://www.forosdelweb.com/f18/manej...al-php-899343/


Esto es un no parar señores.. jajajaj Gracias nuevamente a ambos :D, de verdad se agradece vuestra colaboración.

Etiquetas: acciones, function, js
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 23:06.