Duda/Problema js y FancyZoom

LR

Buenas,

Tengo un pequeño problemilla con js y no se como arreglarlo.

El problema es que solo consigo ejecutar codigo metiendolo en un alert... os explico:

var inImage1 = document.createElement("img");
	inImage1.onclick = function (event) { zoomOut(this, event); return false; };	
	inImage1.setAttribute('src',zoomImagesURI+'spacer.gif');
	inImage1.setAttribute('id','ZoomImage');
	inImage1.setAttribute('border', '0');

Ese es parte del codigo de fancyzoom. El problema viene cuando quiero añadirle un campo mas... Lo que quiero hacer es crear un mapa de imagenes y ahí es donde viene el problema. No consigo ejecutar codigo js para generar el nombre del mapa a usar.

var inImage1 = document.createElement("img");
	inImage1.onclick = function (event) { zoomOut(this, event); return false; };	
	inImage1.setAttribute('src',zoomImagesURI+'spacer.gif');
	inImage1.setAttribute('id','ZoomImage');
	inImage1.setAttribute('border', '0');
	inImage1.setAttribute('onClick','alert(this.src.substr(this.src.lastIndexOf("/") + 1 , (this.src.lastIndexOf(".") - this.src.lastIndexOf("/")) - 1))' );

Si hago eso por ejemplo, me muestra el nombre de la img en el alert sin problemas, en cambio, si saco el codigo del alert o bien se carga el zoom, o bien no hace nada y me lo inyecta como texto sin mas...

Lo que quiero es dejar algo como esto para que al activar el zoom me genere al vuelo el nombre del mapa a usar.

.......
	inImage1.setAttribute('USEMAP', 'this.src.substr(this.src.lastIndexOf("/") + 1 , (this.src.lastIndexOf(".") - this.src.lastIndexOf("/")) - 1))');
 ......

Gracias de antebrazo

Merkury

No entiendo exactamente que quieres hacer en:

 inImage1.setAttribute('USEMAP', 'this.src.substr(this.src.lastIndexOf("/") + 1 , (this.src.lastIndexOf(".") - this.src.lastIndexOf("/")) - 1))');

Y el tema de pasarle como valor el this.src... ¿por que no creas un par de variables y vas almacenando ahí temporalmente?

Aparte el USEMAP tendrás que pasarle el archivo .map no?

1 respuesta
LR

#2 Tengo una web con varias imagenes. Al pinchar en cada una me genera automaticamente el div nuevo con el zoom en la imagen, basicamente la pone centrada en un div flotante y a tamaño "grande".

Lo que quiero hacer es modificar el js de esa libreria para que al crearse ese div, lo genere con un campo usemap y el valor de usemap sea el nombre de la img.

Lo he intentado haciendolo con variables temporales y de todas las formas que se me han ocurrido y no consigo que funcione, solo consigo que ejecutando un alert en un evento me muestre el nombre de la imagen.

1 respuesta
Merkury

#3 Pero la historia es que el usemap es para definir la imagen que va a contener el mapa de imagen.

La cosa es que el valor del usemap debe ser un mapa que hayas creado con <map>

1 respuesta
LR

#4 Si, los mapas los defino en la pagina. El problema viene a la hora de indicar cual usar, de ahi lo de meter el valor del usemap con js.

1 respuesta
Merkury

#5 Si los defines en la pagina porque no recuperas el nombre y lo metes tal cual¿

1 respuesta
LR

#6 Lo que intento es eso mismo.

Al pinchar en la img me crea un div con la imagen en grande. Pinche en la imagen que pinche el div es el mismo, asi que lo que quiero es que al crearse dicho div, me meta en usemap el nombre de la img.

El problema esta ahi, en que al modificar el js para que me capture el nombre de la img y me lo inserte en usemap siempre me pasa lo mismo:
- No hace nada
- Se carga el efecto.

La unica manera en que he conseguido que haga algo, es metiendo el codigo en un alert, pero ya esta...

Resumiendo: Tengo esto:

  • img1
  • img2
  • img3

Pinche en la que pinche lo que hace es crearme esto:

<div id="blablabla" ....>
<img src="aqui_va_el_src_de_cada_img"....>
</div>

Es decir, solamente cambia el src y quiero que esa imagen que crea tenga un campo usemap que cambie en funcion de en que img he pinchado

Merkury

Una cosa solo por probar en vez de 'USEMAP' pon useMap

1 respuesta
LR

#8 Ahora mismo lo tengo en onClick y tampoco va, asi que no creo que sea eso :S

1 respuesta
Merkury

#9 No se tio.. si quieres mandame por MP el source en un .rar y me lo monto en local y lo pruebo

1 respuesta
LR

Al final lo he arreglado con js "a pelo"

He metido un evento onClick en el body y modifico al vuelo el valor mapa a usar.

Thx de todas formas #10

1 respuesta
Merkury

#11 Alegrome.

La opción de hacer <buttons> con el onclick a la función y pasando el valor, muchas veces es la mejor solución la verdad.

Yo en el proyecto que estoy desarrollando ahora para la universidad, como tengo trillones de botones generados dinamicamente es lo que hago xD

Usuarios habituales

  • Merkury
  • LR