Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/01/2010, 12:26
Avatar de Tecna
Tecna
 
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 4 meses
Puntos: 45
Respuesta: Aplicar una funcion a un objeto creado dinamicamente

Buenas,

he simplificado un poco el código que tenias
Código Javascript:
Ver original
  1. var tit = []; //como variable global para poder acceder facilmente
  2.  
  3. function init()
  4. {
  5.     var objs = document.getElementsByTagName('*');
  6.     setAllTitles(objs);
  7. }
  8.  
  9. window.onload = init;
  10.  
  11. function setAllTitles(objs)
  12. {
  13.  
  14. // borramos los titulos, definimos los eventos y creamos el elemento
  15.  
  16.     for (var i = 0; i < objs.length; i++)
  17.     {
  18.         if (objs[i].title)
  19.         {
  20.             var ob = (objs[i]);
  21.             tit[i] = ob.title;
  22.             ob.id = 'elemento-' + i; // me interesa guardar el valor de i
  23.             ob.removeAttribute ('title');
  24.             ob.onmouseover = mouseOver;
  25.             ob.onmouseout = mouseOut;
  26.         } // if
  27.     } // for
  28.  
  29.     document.onmousemove = function (evt){return mouseMove(evt);};
  30.    
  31.     var tt = document.createElement('div');
  32.     tt.className = 'estilos'; // todos los estilos mejor en el css
  33.     tt.id = 'lyrtooltip';  
  34.     document.body.appendChild(tt);
  35.    
  36. }
  37.  
  38. /////////// funciones de los eventos
  39.  
  40. function mouseOver()
  41. {
  42.     var tt = document.getElementById('lyrtooltip');
  43.     tt.style.display = 'block';
  44.     var orden = this.id.substr(9); //recupero el valor de i aqui
  45.     var titulo = tit[orden];    // y asi aqui accedo facilmente al titulo del elemento  
  46.     tt.innerHTML = titulo;
  47. }
  48.  
  49. function mouseOut()
  50. {
  51.     var tt = document.getElementById('lyrtooltip');
  52.     tt.style.display = 'none';
  53. }
  54.  
  55. function mouseMove(evt)
  56. {
  57.     var tt = document.getElementById('lyrtooltip');
  58.     tt.style.left = ( parseInt (mouseX(evt)) + 15 ) + 'px';
  59.     tt.style.top = ( parseInt (mouseY(evt)) - 5 ) + 'px';
  60. }
  61.  
  62. // a partir de aqui esta igual que lo tenias
  63.  
  64. function mouseX(evt)
  65. {
  66.     if (!evt) evt = window.event;
  67.     if (evt.pageX) return evt.pageX; else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
  68.     else return 0;
  69.  
  70. }
  71.  
  72. function mouseY(evt)
  73. {
  74.     if (!evt) evt = window.event;
  75.     if (evt.pageY) return evt.pageY; else if (evt.clientY) return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
  76.     else return 0;
  77. }
  78.  
  79. //fin

Los estilos los tendrias que asignar mediante css, las funciones de los eventos son independientes, y no hay que añadir nada en el html, con eso ya queda el código mas limpio. Espero que te sirva. Un saludo