Foros del Web » Programando para Internet » Javascript »

obtener objeto anterior al actual ???

Estas en el tema de obtener objeto anterior al actual ??? en el foro de Javascript en Foros del Web. que tal forer@s tengo este html: Código HTML: <div class= "publicaciones" > <div class= "publicacion" > <?php echo $publicacion; ?> </div> <img id= "tool_edit" class= ...
  #1 (permalink)  
Antiguo 20/09/2012, 13:10
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
obtener objeto anterior al actual ???

que tal forer@s

tengo este html:

Código HTML:
<div class="publicaciones">
    	<div class="publicacion"><?php echo $publicacion; ?></div>
	<img id="tool_edit" class="tool" src="images/deptos_info/pub_edit.png" title="Editar publicaci&oacute;n" onclick="onClick(this)" />
        <img id="tool_hide" class="tool" src="images/deptos_info/pub_hide.png" title="Ocultar publicaci&oacute;n del muro" onclick="" />
        <div class="date_info"><?php echo "Publicado el ".$fecha[2]." de ".$fecha[1]." del ".$fecha[0]." a las ".$hora; ?></div>
	<div class="clear"></div>
</div> 
quiero saber como acceder al objeto anterior a la etiqueta img id tool_edit, tengo por ejemplo esta linea dentro de la funcion onclic de la misma etiqueta img:

element = element.parentNode;

pero segun yo eso me trae el div class publicaciones, necesitaría el div class publicacion, ejemplo, algo asi como

element = element.beforeNode;

aunque claro que eso no existe, como podría obtener el objeto anterior???

gracias
  #2 (permalink)  
Antiguo 20/09/2012, 13:38
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: obtener objeto anterior al actual ???

Supongo que tendrías que recorrer los hijos del padre de tool_edit, ir almacenando el último elemento para que cuando encuentres tool_edit, ya tengas el elemento anterior (último).

Otra opción, si ese div es el único con la clase "publicacion" buscar el elemento que tenga esta clase. Lo podrías hacer muy fácil con jquery.


Aunque la verdad, creo que sería más eficiente y directo si al div con la clase "publicacion" le colocas un id y lo referencias de forma directa.
  #3 (permalink)  
Antiguo 20/09/2012, 14:17
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: obtener objeto anterior al actual ???

hola ocp001a

es que la etiqueta img lanza la funcion:

Código Javascript:
Ver original
  1. function onClick( element ){
  2.     var name;
  3.     do{
  4.         element = element.parentNode;
  5.     }
  6.     while ( element && ( name = element.nodeName.toLowerCase() ) && ( name != 'div' || element.className.indexOf( 'publicacion' ) == -1 ) && name != 'body' )
  7.  
  8.     if ( name == 'div' && element.className.indexOf( 'publicacion' ) != -1 )
  9.         replaceDiv( element );
  10. }
  11. var editor;
  12. function replaceDiv( div ){
  13.     if ( editor )
  14.         editor.destroy();
  15.     editor = CKEDITOR.replace( div, { toolbar : 'Basic' } );
  16. }

que lo que hace es reemplazar todo lo que hay en el div class publicaciones por un editor pero yo quiero que lo reemplace en div class publicacion (que es el primer hijo de div class publicaciones) pero no se como referenciarlo o como acceder a el :(

para que te des una idea es esto:

http://nightly.ckeditor.com/7613/_sa...ivreplace.html

pero en lugar de que funcione con doble clic, yo quiero que al dar clic en la imagen aparezca el edito e indicarle en que div aparecer (replace)

gracias
  #4 (permalink)  
Antiguo 20/09/2012, 14:31
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: obtener objeto anterior al actual ???

entonces es muy sencillo:

<div class="publicacion" id="diveditor">//ponemos un id al div

luego en el onclick:

onclick="replaceDiv( document.getElementById('diveditor') );" // a replacediv le pasamos el elemento diveditor
  #5 (permalink)  
Antiguo 20/09/2012, 14:38
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: obtener objeto anterior al actual ???

si ya habia probado así, pero como las publicaciones (div publicaciones) se genera dinamicamente de una consulta a la base de datos cada vez que doy clic a cualquier publicacion siempre se abre en el primer div generado.

Por lo que se necesita identificar desde que publicacion se dio el clic (al ser dinamicos todos tienen el mismo id) :/

Código PHP:
Ver original
  1. <?php
  2. $query_pub="SELECT * FROM muro WHERE id_depto='$id_depto' ORDER BY date_info DESC"; /*15*/
  3. $resultado_pub=mysql_query($query_pub) or die('Error en la consulta'.mysql_error());
  4. while($pubs=mysql_fetch_array($resultado_pub, MYSQL_ASSOC)){
  5.     $id_pub=$pubs['id_publicacion'];
  6.     $publicacion=$pubs['publicacion'];
  7.     $fecha_hora=$pubs['date_info'];
  8.     $fecha=substr($fecha_hora,0,10);
  9.     $hora=substr($fecha_hora,11,5);
  10.     $fecha=explode("-",$fecha);
  11.     switch($fecha[1]){  
  12.         case "01": $fecha[1]="Enero"; break;  
  13.         case "02": $fecha[1]="Febrero"; break;  
  14.         case "03": $fecha[1]="Marzo"; break;  
  15.         case "04": $fecha[1]="Abril"; break;  
  16.         case "05": $fecha[1]="Mayo"; break;  
  17.         case "06": $fecha[1]="Junio"; break;  
  18.         case "07": $fecha[1]="Julio"; break;  
  19.         case "08": $fecha[1]="Agosto"; break;  
  20.         case "09": $fecha[1]="Septiembre"; break;  
  21.         case "10": $fecha[1]="Octubre"; break;  
  22.         case "11": $fecha[1]="Noviembre"; break;  
  23.         case "12": $fecha[1]="Diciembre"; break;  
  24.         default: $fecha[1]="Mes nulo";
  25.     }
  26. ?>
  27.     <div id="publicaciones" class="publicaciones">
  28.         <div id="publicacion" class="publicacion"><?php echo $publicacion; ?></div>
  29.     <img id="tool_edit" class="tool" src="images/deptos_info/pub_edit.png" title="Editar publicaci&oacute;n" onclick="getNodoTexto(this)" />
  30.         <img id="tool_hide" class="tool" src="images/deptos_info/pub_hide.png" title="Ocultar publicaci&oacute;n del muro" onclick="" />
  31.         <div class="date_info"><?php echo "Publicado el ".$fecha[2]." de ".$fecha[1]." del ".$fecha[0]." a las ".$hora; ?></div>
  32.         <div class="clear"></div>
  33.     </div>
  34. <?php
  35. }
  36. ?>

gracias
  #6 (permalink)  
Antiguo 20/09/2012, 14:59
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: obtener objeto anterior al actual ???

No veo cómo todos los ids puedan ser iguales, pero si así fuera podrías asignar un id como desees, dentro del while:


Código PHP:
Ver original
  1. while($pubs=mysql_fetch_array($resultado_pub, MYSQL_ASSOC)){
  2. .
  3. .
  4. .
  5. .
  6.     <div id="publicaciones" class="publicaciones" id="div<?php echo $id_pub;?>" >
  7.         <div id="publicacion" class="publicacion"><?php echo $publicacion; ?></div>
  8.     <img id="tool_edit" class="tool" src="images/deptos_info/pub_edit.png" title="Editar publicaci&oacute;n" onclick="replaceDiv( document.getElementById(' div<?php echo $id_pub;?>') );" />
  9.         <img id="tool_hide" class="tool" src="images/deptos_info/pub_hide.png" title="Ocultar publicaci&oacute;n del muro" onclick="" />
  10.         <div class="date_info"><?php echo "Publicado el ".$fecha[2]." de ".$fecha[1]." del ".$fecha[0]." a las ".$hora; ?></div>
  11.         <div class="clear"></div>
  12.     </div>
  13. <?php
  14. }
  15. ?>
o bien
Código PHP:
Ver original
  1. $x=0;
  2. while($pubs=mysql_fetch_array($resultado_pub, MYSQL_ASSOC)){
  3. .
  4. .
  5. .
  6. .
  7.     <div id="publicaciones" class="publicaciones" id="div<?php echo $x;?>" >
  8.         <div id="publicacion" class="publicacion"><?php echo $publicacion; ?></div>
  9.     <img id="tool_edit" class="tool" src="images/deptos_info/pub_edit.png" title="Editar publicaci&oacute;n" onclick="replaceDiv( document.getElementById(' div<?php echo $x;?>') );" />
  10.         <img id="tool_hide" class="tool" src="images/deptos_info/pub_hide.png" title="Ocultar publicaci&oacute;n del muro" onclick="" />
  11.         <div class="date_info"><?php echo "Publicado el ".$fecha[2]." de ".$fecha[1]." del ".$fecha[0]." a las ".$hora; ?></div>
  12.         <div class="clear"></div>
  13.     </div>
  14. <?php
  15. $x++;
  16. }
  17. ?>
  #7 (permalink)  
Antiguo 20/09/2012, 18:07
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 6 meses
Puntos: 23
Respuesta: obtener objeto anterior al actual ???

Ya quedo :D muchas gracias

el div quedo con el id="publicacion<?php echo $id_pub; ?>"

y en la imagen

onclick="replaceDiv('publicacion<?php echo $id_pub; ?>')"

Y funciona de maravilla

Me estaba complicado de más, aunque la funcion que busca el nodo esta muy interesante

:)

Etiquetas: actual, funcion, html, objeto, anteriores
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 12:36.