El html tiene una capa llamada "tooltip" que es la que se muestra con el texto dinámico:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"> <head> <title>Documento sin título</title> <link rel="stylesheet" type="text/css" href="estilo.css" /> <script type="text/javascript" src="miTooltipYExtras.js"></script> </head> <body> <div id="contenido"> <ul> <li><a href="1" title="title 1">enlace 1</a></li> <li><a href="2" title="title 2">enlace 2</a></li> <li><a href="3" title="title 3">enlace 3</a></li> <li><a href="4" title="title 4">enlace 4</a></li> </ul> </div> <div id="tooltip"> <p></p> </div> </body> </html>
Código:
El problema en concreto es que dentro del for de la función "start" referenciasEnlaces[i] contiene la referencia al enlace actual y luego asigno un evento onmouseover a ese enlace pero el parametro que uso en la siguiente línea (enlaceActual) es el que queda cuando se acaba el for completamente. Yo quisiera poder pasar a la función ponTip el parámetro enlaceActual del momento en que se asigna el evento onmouseover.EXTRAS = { // ====================================================== // Capturador de eventos (www.scottandrew.com) sumaEvento : function (objetivo, tipoDeEvento, queEjecutar, usoDeLaCaptura){ if(objetivo.addEventListener){ objetivo.addEventListener(tipoDeEvento, queEjecutar, usoDeLaCaptura); return true; }else{ if (objetivo.attachEvent){ var r = objetivo.attachEvent("on"+tipoDeEvento, queEjecutar); return r; }else{ return false; } } },//final de la función sumaEvento // ====================================================== }//final del encapsulado EXTRAS // ========================================================== //Variables globales para que funcione en Firefox y similares var X = 0; var Y = 0; //Variables globales para que funcione en Firefox y similares TOOLTIP = { //========================================================= capaTooltip : 'tooltip', offsetX : 0, offsetY : 30, //========================================================= start : function() { var referenciasEnlaces = document.getElementsByTagName('a'); for (var i=0; i<referenciasEnlaces.length; i++) { var enlaceActual = referenciasEnlaces[i]; //alert('antes de onmouseover enlaceActual= '+enlaceActual); enlaceActual.onmouseover = function() { //alert('antes de ponTip enlaceActual= '+enlaceActual); TOOLTIP.ponTip(enlaceActual); } enlaceActual.onmouseout = function() { TOOLTIP.quitaTip(); } } },//final de start //========================================================= ponTip : function (objetoActual) { var referenciaAlTooltip = document.getElementById(TOOLTIP.capaTooltip); var xTemp = TOOLTIP.offsetX+X; var yTemp = TOOLTIP.offsetY+Y; var leftTooltip = xTemp+'px'; var topTooltip = yTemp+'px'; //Si quiero retardo descomento esto /*var millis = 500; var date = new Date(); var curDate = null; do { var curDate = new Date(); }while(curDate-date < millis);*/ //Si quiero retardo descomento esto //alert('Dentro de ponTip objetoActual= '+objetoActual); referenciaAlTooltip.firstChild.nodeValue = objetoActual.title; referenciaAlTooltip.style.left = leftTooltip; referenciaAlTooltip.style.top = topTooltip; referenciaAlTooltip.style.visibility = 'visible'; },//final de ponTip //========================================================= quitaTip : function () { var referenciaAlTooltip = document.getElementById(TOOLTIP.capaTooltip); referenciaAlTooltip.style.visibility = 'hidden'; referenciaAlTooltip.style.left = '-1000px'; },//final de quitaTip //========================================================= buscaCoord : function (e) { var ie = document.all?true:false; if (ie) { //para IE funciona lo de abajo X = event.clientX + document.body.scrollLeft; Y = event.clientY + document.body.scrollTop; } else { X = e.pageX; Y = e.pageY; } }//final de buscaCoord }//final del encapsulado TOOLTIP // ============================================================================================== if (document.getElementsByTagName) EXTRAS.sumaEvento(document, 'mousemove', TOOLTIP.buscaCoord, false); if (document.getElementsByTagName) EXTRAS.sumaEvento(window, 'load', TOOLTIP.start, false); // ==============================================================================================
Así como está se queda siempre en el valor del último enlace (al finalizar el for completamente).
Mi intención es que dentro de ponTip cambie el title del enlace actual a title="" para que no me salga en el navegador y poner ese title del enlace en el párrafo que hay en la capa "tooltip" con referenciaAlTooltip.firstChild.nodeValue = objetoActual.title
Ya se que es enrollarse demasiado pero así teneis todo expuesto. Si alguien tiene una idea de como solucionarlo...