Foros del Web » Programando para Internet » Javascript »

Evitar el uso de onCLick

Estas en el tema de Evitar el uso de onCLick en el foro de Javascript en Foros del Web. Tengo un JavaScript simple que cambia una imagen en otro lado de la página cuando se hace click. Amplía la foto de una galería. Estoy ...
  #1 (permalink)  
Antiguo 14/04/2017, 17:45
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Evitar el uso de onCLick

Tengo un JavaScript simple que cambia una imagen en otro lado de la página cuando se hace click. Amplía la foto de una galería.

Estoy usando en onClick, lo que obviamente me permite meterlo en cualquier objeto, por ejemplo en una miniatura de otras imágenes o en un simple a href="#"

Código HTML:
<a href="#" onClick="changeImage('Image1.jpg');">Click me</a>
<a href="#" onClick="changeImage('Image2.jpg');">Click me too</a> 
Lo que quiero es evitar el uso del onClick, siguiendo la política unobtrusive JavaScript.

Código HTML:
<a href="Image1.jpg">Click me</a>
<a href="Image2.jpg">Click me too</a> 
¿Cómo podría disparar la función changeImage, de manera que solito tome el link real?

En caso de que no esté el JavaScript activado, pues ya use el link y mande a la foto, pero en el caso esperado, no quiero que se dispare el link a una página nueva, sino que me cambie la foto grande de la galería.
  #2 (permalink)  
Antiguo 14/04/2017, 23:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Evitar el uso de onCLick

Tendrías que:

1. Por cuestiones de conflicto con elementos semejantes cuya funcionalidad no se encuentre comprendida por lo que tienes en mente, sería recomendable que asignes una misma clase o pseudoatributo a los enlaces en cuestión o bien que los agrupes dentro de un elemento de bloque.

2. Al tener lo anterior, puedes delegar el evento click ya sea al contenedor de los enlaces o al documento y tomar al elemento pulsado a partir del objeto del evento.

3. Dentro del bloque de instrucciones, cancelas el comportamiento natural del enlace (redirigir), tomarías el valor del atributo href y lo pasarías como argumento en la llamada a la función changeImage().

Por ejemplo:
Código HTML:
Ver original
  1. <section id="enlaces">
  2.     <a href="Image1.jpg">Click me</a>
  3.     <a href="Image2.jpg">Click me too</a>
Código Javascript:
Ver original
  1. document.querySelector("#enlaces").addEventListener("click", function(event){ //Al "clickear" dentro del contenedor
  2.     if (event.target.tagName == "A"){ //Si el elemento "clickeado" es un enlace
  3.         event.preventDefault(); //Cancelar el evento
  4.         changeImage(event.target.href); //Y llamas a la función pasándole el valor del atributo "href"
  5.     }
  6. }, false);

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 15/04/2017, 15:50
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Evitar el uso de onCLick

Gracias, le voy a dar una revisada :o)
  #4 (permalink)  
Antiguo 17/04/2017, 08:54
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evitar el uso de onCLick

Me sumo totalmente a lo que dice alexis,

Por otro lado si no deseas usar otra etiqueta, esto haría, es feo pero funcional y rápido:

Código JAVASCRIPT:
Ver original
  1. function changeImage(el, ev){
  2. var enlace = el.getAttribute("href"); //toma de href
  3. ev.preventDefault();
  4.  
  5. //el resto de tu funcion
  6. }

Y a tus imágenes le agregas:
onclick="changeImage(this, event);"


<a href="imagenX.jpg" onclick="changeImage(this, event);" />
<a href="imagenY.jpg" onclick="changeImage(this, event);" />
<a href="imagenZ.jpg" onclick="changeImage(this, event);" />
  #5 (permalink)  
Antiguo 04/05/2017, 19:17
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Respuesta: Evitar el uso de onCLick

Oh Gracias alvaro. También lo voy a revisar.

Etiquetas: onclick, página
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 15:41.