Foros del Web » Programando para Internet » Javascript »

Problema con variable PHP+AJAX y Tooltip

Estas en el tema de Problema con variable PHP+AJAX y Tooltip en el foro de Javascript en Foros del Web. Hola gente! Tengo un problema con este ejemplo que quiero incluir en mi web. Lo que estoy tratando de hacer es que me muestre en ...
  #1 (permalink)  
Antiguo 18/08/2011, 21:01
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Problema con variable PHP+AJAX y Tooltip

Hola gente! Tengo un problema con este ejemplo que quiero incluir en mi web. Lo que estoy tratando de hacer es que me muestre en un tooltip, una imagen, un codigo y la descripción de un producto de acuerdo al ejemplo que les puse en el primer div. Los demás son del ejemplo que viene con todo esto.
Uno de los problemas que encontré es que al agregar el js y al pasar el mouse por toda la web, como está todo hecho con css y capas, el js toma TODOS los divs y no el div donde están las variables.
Otro problema es... cómo hago para que la página.php tome esas variables SIN hacer click ni presionar nada, pase a esa página, haga la consulta y me muestre en el tooltip todos los datos.

Les dejo los archivos.

pagina.html
Código HTML:
<html>
<head>
<style>
.cuadradito{
  background-color: #f00;
  height: 50px; 
  width: 50px;
  margin:3px;
  z-index: -1;

}

#divmensaje {
  background-color: yellow;
   position: absolute; 
   visibility: hidden; 
   padding: 5px;
   width:250px;
  z-index: 100;
}

</style>

<title>Problema</title>
<script languaje="javascript" src="funciones.js" type="text/javascript"></script>
<link rel="StyleSheet" href="estilos.css" type="text/css">
</head>
<body>
<p>Entre con el mouse al recuadro.</p>
<a href="detalle.php?id_articulo=<?php echo $fila['id_articulo']; ?>&cod_categoria=<?php echo $fila['cod_categoria']; ?>" ><div class="cuadradito" id="c1"></div></a>
<div class="cuadradito" id="c2"></div>
<div class="cuadradito" id="c3"></div>
<div class="cuadradito" id="c4"></div>
</body>
</html> 
funciones.js
Código:
addEvent(window,'load',inicializarEventos,false);

function inicializarEventos()
{
  var vec=document.getElementsByTagName('div');
  for(f=0;f<vec.length;f++)
  {
    addEvent(vec[f],'mouseover',mostrarToolTip,false);
    addEvent(vec[f],'mouseout',ocultarToolTip,false);
    addEvent(vec[f],'mousemove',actualizarToolTip,false);
  }
  var ele=document.createElement('div');
  ele.setAttribute('id','divmensaje');
  vec=document.getElementsByTagName('body');
  vec[0].appendChild(ele);

}

function mostrarToolTip(e) 
{

  var d = document.getElementById("divmensaje");
  d.style.visibility = "visible";
  if (window.event) 
    e=window.event;
  d.style.left = e.clientX + document.body.scrollLeft + 15;
  d.style.top = e.clientY + document.body.scrollTop + 15;
  var ref;
  if (window.event)
    ref=window.event.srcElement;
  else
    if (e)
      ref=e.target;
  recuperarServidorTooltip(ref.getAttribute('id'));
}

function actualizarToolTip(e) 
{
  if (window.event) 
    e=window.event;
  var d = document.getElementById("divmensaje");
  d.style.left = e.clientX + document.body.scrollLeft + 15;
  d.style.top = e.clientY + document.body.scrollTop + 15;
}


function ocultarToolTip(e) 
{
  var d = document.getElementById("divmensaje");
  d.style.visibility = "hidden";
}

var conexion1;
function recuperarServidorTooltip(codigo) 
{
  conexion1=crearXMLHttpRequest();
  conexion1.onreadystatechange = procesarEventos;
  conexion1.open('GET','pagina1.php?cod='+codigo, true);
  conexion1.send(null);
}

function procesarEventos()
{
  var d = document.getElementById("divmensaje");
  d.style.visibility = "visible";
  if(conexion1.readyState == 4)
  {
    d.innerHTML=conexion1.responseText;
  } 
  else 
  {
    d.innerHTML = '<img src="../cargando.gif">';
  }
}


//***************************************
//Funciones comunes a todos los problemas
//***************************************
function addEvent(elemento,nomevento,funcion,captura)
{
  if (elemento.attachEvent)
  {
    elemento.attachEvent('on'+nomevento,funcion);
    return true;
  }
  else  
    if (elemento.addEventListener)
    {
      elemento.addEventListener(nomevento,funcion,captura);
      return true;
    }
    else
      return false;
}

function crearXMLHttpRequest() 
{
  var xmlHttp=null;
  if (window.ActiveXObject) 
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else 
    if (window.XMLHttpRequest) 
      xmlHttp = new XMLHttpRequest();
  return xmlHttp;
}
pagina.php
Código PHP:
<?php
  
if ($_REQUEST['cod']=='c1')
  {
    echo 
"<p>Primer tooltip.</p>";
    echo 
"<p>aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaaaaaa";
    echo 
"aaaaaaaaaaaaaaaaaaa aaaaaaaaa aaaaaaaaaaaaa aaaaaaaaaaaaaaaa";
    echo 
"aaaaaaaaaaaaaaaaaaa aaaaaaaa aaaaaaaaaaaaaa aaaaaaaaa aaaaaaa";
    echo 
"aaaaaaaaaaaaaa aaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaa aaaaaaaaaa";
    echo 
"aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaa aaaaaaa aaaaaaaaaaaaaaaa</p>";
  }
  if (
$_REQUEST['cod']=='c2')
  {    
    echo 
"<p>Segundo tooltip.</p>";
    echo 
"<p>bbbbbbbb bbbbbbbbbbb bbbbbbbb bbbbbbbbbbbbbb bbbbbbbbbbb bb";
    echo 
"bbbbbbbb bbbbbbbbbb bbbbbbbbbbbb bbbbbbbbbb bbbbbbbbbbb bbb</p>";
  }
  if (
$_REQUEST['cod']=='c3')
    echo 
"<p>Tercer tooltip.</p>";
  if (
$_REQUEST['cod']=='c4')
    echo 
"<p>Cuarto tooltip.</p>";

?>
Desde ya muchas gracias y espero puedan darme una mano.
Saludos.
MArx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 19/08/2011, 01:57
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Respuesta: Problema con variable PHP+AJAX y Tooltip

Es que eso es lo que hace el código, ponerle esas funciones a todos los divs que encuentre:
Código:
var vec=document.getElementsByTagName('div');
  for(f=0;f<vec.length;f++)
  {
    addEvent(vec[f],'mouseover',mostrarToolTip,false);
    addEvent(vec[f],'mouseout',ocultarToolTip,false);
    addEvent(vec[f],'mousemove',actualizarToolTip,false);
  }
Si solo lo quieres para alguno en concreto, no hagas ese bucle for, y en lugar de pasarle vec[f] pasale un identificador en concreto, del div que quieras mostrar tooltip.

Saludos.
  #3 (permalink)  
Antiguo 19/08/2011, 02:57
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema con variable PHP+AJAX y Tooltip

Que manía de postear cosas de javascript en php...

Como ya te han dicho la función añade el evento a cada div.
En vez de hacerlo por tag hazlo por la clase del div.
Por id no te serviría pues sólo te cogería el primero. Tendrías que hacer un id por cada div y es un jaleo, más sencillo por clase.

Sí, en javascript no hay una función nativa para buscar por clase, pero es posible usando otras.
Caricatos hace tiempo publico una forma sencilla. (Busca en el foro de JS)
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #4 (permalink)  
Antiguo 19/08/2011, 04:25
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Respuesta: Problema con variable PHP+AJAX y Tooltip

Es verdad, tienes razón, pensé que estaba en el foro de Javascript, y resultó estar en otra pestaña, de haberlo sabido le habría invitado a que plantease allí su pregunta en lugar de contestar.
  #5 (permalink)  
Antiguo 19/08/2011, 08:18
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Problema con variable PHP+AJAX y Tooltip

Gracias a los 2 por responderme y mil disculpas por no haberme dado cuenta dnd posteaba.

Cita:
Iniciado por yournightmare86 Ver Mensaje
Es que eso es lo que hace el código, ponerle esas funciones a todos los divs que encuentre:
Código:
var vec=document.getElementsByTagName('div');
  for(f=0;f<vec.length;f++)
  {
    addEvent(vec[f],'mouseover',mostrarToolTip,false);
    addEvent(vec[f],'mouseout',ocultarToolTip,false);
    addEvent(vec[f],'mousemove',actualizarToolTip,false);
  }
Si solo lo quieres para alguno en concreto, no hagas ese bucle for, y en lugar de pasarle vec[f] pasale un identificador en concreto, del div que quieras mostrar tooltip.

Saludos.
Sacándole el bucle y agregándole el identificador, sería así?
Código:
var tool=document.getElementsById('tooltip');
  {
    addEvent(tool,'mouseover',mostrarToolTip,false);
    addEvent(tool,'mouseout',ocultarToolTip,false);
    addEvent(tool,'mousemove',actualizarToolTip,false);
  }
No pude revisar lo que me comentabas porque estoy en el trabajo, pero encontré algo que posteó Caricatos sobre el TagName… puede ser esto IEKK sobre lo que me decías?
Código:
function coleccionPorClases(cual) {
 clases = [];
 for (i = 0, todos = document.body.getElementsByTagName("*"), total = todos.length; i < total; i ++)
  if (todos[i].className == cual) clases.push(todos[i]);
 return clases;
}
Esto que quiero hacer es para el resultado de una consulta que me devuelve una lista de productos los cuales me muestra la foto, el nombre y el precio. Al pasar el mouse por arriba de la foto (que llevaría el div del tooltip), justamente quiero que me muestre en un tooltip el resto de la información con la foto incluida que viene de la bdd.

La pagina.php tiene el código que luego debería reemplazar con la respectiva consulta a la base de datos para que capture el id de la tooltip, no?

Mil gracias nuevamente por su tiempo.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #6 (permalink)  
Antiguo 19/08/2011, 12:15
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Problema con variable PHP+AJAX y Tooltip

¿Puede ser así como lo armé en el ejemplo? ¿Alguna sugerencia?
Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 23/08/2011, 10:33
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 11 meses
Puntos: 1
Respuesta: Problema con variable PHP+AJAX y Tooltip

No me funciona este código, ¿puede ser que esté haciendo algo mal?

Código:
var tool=document.getElementsById('tooltip');
  {
    addEvent(tool,'mouseover',mostrarToolTip,false);
    addEvent(tool,'mouseout',ocultarToolTip,false);
    addEvent(tool,'mousemove',actualizarToolTip,false);
  }
Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Etiquetas: html, php, tooltip, variables
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:14.