Foros del Web » Programando para Internet » Javascript »

obtener el id de un <a>

Estas en el tema de obtener el id de un <a> en el foro de Javascript en Foros del Web. hola, si tengo un link <a href="#" id="codigo">texto</a> cómopuedo obtener con javascript, jquery, ajax... el tipo id que es.. es decir, necesito tener en una ...
  #1 (permalink)  
Antiguo 01/06/2008, 13:51
 
Fecha de Ingreso: marzo-2005
Mensajes: 271
Antigüedad: 19 años, 1 mes
Puntos: 1
obtener el id de un <a>

hola,

si tengo un link

<a href="#" id="codigo">texto</a>


cómopuedo obtener con javascript, jquery, ajax... el tipo id que es..


es decir, necesito tener en una variable el valor de "id"


gracias
  #2 (permalink)  
Antiguo 01/06/2008, 14:46
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: obtener el id de un <a>

Hola MandrakeXP

Si sólo tienes un enlace, es fácil:

Código:
variable = document.getElementsByTagName('a')[0].id;
Si tienes más enlaces tendrías que cambiar el cero por el número de enlace que quieras.

Saludos,
  #3 (permalink)  
Antiguo 01/06/2008, 14:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 271
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: obtener el id de un <a>

Javier, el menu se genera dinamicamente de una base de datos, y no sé cuantos elementos pueden salir a nivel de javascript...
  #4 (permalink)  
Antiguo 01/06/2008, 15:03
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: obtener el id de un <a>

Ya que la página la generas dinámicamente, te recomiendo que guardes el valor del id en una variable javascript lista para ser usada en lo que quieras.

Código Javascript:
Código:
...
var miId = "codigo";
...
Código HTML:
Código:
...
<a href="#" id="codigo">texto</a>
...
__________________
Pop & Rock Bands
Pop Music Stars
  #5 (permalink)  
Antiguo 02/06/2008, 01:53
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener el id de un <a>

Una cuestión... ¿En qué momento/situación/acción necesitas obtener el valor del id?

Lo digo por lo siguiente. En general, el identificador (id) de un elemento es algo único y que decides en tiempo "de creación" de la página. Es decir, que normalmente lo sabes de antemano en casi cualquier situación.

Alguna situación en la que -dependiendo de cómo lo hagas- podrías no saber el id de antemano, podría ser la de haber asociado una misma función a un evento de muchas de tus opciones de menú. Si es una situación de este tipo lo que tienes, hay una solución sencilla: Cuando asocias el evento, tienes el propio elemento, ¿no? No tienes más que sacar en ese momento el id.
  #6 (permalink)  
Antiguo 02/06/2008, 04:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 271
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: obtener el id de un <a>

abajo esta todo mejor dicho
  #7 (permalink)  
Antiguo 02/06/2008, 04:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 271
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: obtener el id de un <a>

entro en más detalle de código para que lo entendais:

tengo un menú:

<ul>
<li><a class="current" id="a_001" href="#" target="_parent">001</a></li>
<li><a id="a_002" href="#" target="_parent">002</a></li>
<li><a id="a_003" href="#" target="_parent">003</a></li>
<li><a id="a_004" href="#" target="_parent">004</a></li>
</ul>


dependiendo en qué link haga clic el usuario, se mostrará el párrafo asociado:

<div id="contenido">

<p id="001">aaaa</p>
<p id="002">bbbbbbb</p>

</div>


de momento he conseguido que al hacer clic sobre el link "001" se muestre el párrafo "001"

el problema es generalizarlo, es decir, que el sistema se haga para cualquier link.
Los links (con sus id) son generados con PHP porque vienen de una base de datos.

Este es el codigo javascript / jQuery


<script type="text/javascript">

$(document).ready(function() {

// primero escondo todos los parafos
$('#content p').hide();

// asocio al link la accion de mostrar el parrafo (u esconderlo si estaba mostrado antes)

$('div#menu ul li a#a_001').click(function() {

$('p#001').toggle('slow');
return false;
});

});

</script>
  #8 (permalink)  
Antiguo 02/06/2008, 04:53
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: obtener el id de un <a>

¿ Y no es más facil pasar el id como parámetro a la funcion de javascript de mostrar/ocultar ?
Ejemplo:
Código:
...
<li><a id="a_002" href="javascript:cambiar('002');" target="_parent">002</a></li>
<li><a id="a_003" href="javascript:cambiar('003');" target="_parent">003</a></li>
..
Luego la funcion cambiar() puede llamar a getElementById(parametro_recibido); para cambiar el estilo a visible u oculto.
__________________
Pop & Rock Bands
Pop Music Stars
  #9 (permalink)  
Antiguo 02/06/2008, 04:57
 
Fecha de Ingreso: marzo-2005
Mensajes: 271
Antigüedad: 19 años, 1 mes
Puntos: 1
Respuesta: obtener el id de un <a>

pero mezclas html con javascript mmm y queda un poco intrusivo :(
  #10 (permalink)  
Antiguo 02/06/2008, 05:05
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: obtener el id de un <a>

Pues en mi opinión tener el <a href="#" ...> no es una buena solución, porque si la pagina es larga (tiene scroll) se va a mover para que la parte visible sea la del top.

Otra alternativa más parecido a lo que quieres es usar el evento onclick, aunque es casi igual a lo de antes:
Código:
...
<li><a id="a_002" href="#" onclick="cambiar('002');" target="_parent">002</a></li>
<li><a id="a_003" href="#" onclick="cambiar('003');" target="_parent">003</a></li>
..
__________________
Pop & Rock Bands
Pop Music Stars
  #11 (permalink)  
Antiguo 02/06/2008, 05:45
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener el id de un <a>

Entiendo que el asunto está aquí:
Código:
$('div#menu ul li a#a_001').click(function() {
    $('p#001').toggle('slow');
    return false;
});
no?

Entiendo que lo que querrías hacer es "asociar los eventos todos de una sola vez"... Algo así:
Código:
$('div#menu ul li a').click(function() {
    $('p'+$(this).attr("id").slice("_")[1]).toggle('slow');
    return false;
});
¿Es esto (o algo así) lo que quieres? Lógicamente si tienes ids más complejos o con varios niveles o lo que sea, tendrás que cambiar el troceado (.slice("_")[1]) por lo que se ajuste a tus necesidades.
  #12 (permalink)  
Antiguo 02/06/2008, 05:49
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener el id de un <a>

Cita:
Iniciado por 00siete Ver Mensaje
Pues en mi opinión tener el <a href="#" ...> no es una buena solución, porque si la pagina es larga (tiene scroll) se va a mover para que la parte visible sea la del top.
Eso no ocurre (o no debería ocurrir) si en el onclick devuelves un false.
  #13 (permalink)  
Antiguo 02/06/2008, 09:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: obtener el id de un <a>

Cita:
Iniciado por venkman Ver Mensaje
Eso no ocurre (o no debería ocurrir) si en el onclick devuelves un false.
Si, pero aunque yo no estoy de acuerdo, precisamente lo que no quiere MandrakeXP es que en el elemento <a> aparezca nada de Javascript porque dice que al mezclar HTML y Javascript queda "intrusivo"
__________________
Pop & Rock Bands
Pop Music Stars
  #14 (permalink)  
Antiguo 02/06/2008, 09:56
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener el id de un <a>

Con el código que yo he puesto, el HTML exactamente el que ha puesto MandrakeXP, sin nada de Javascript.

Y yo sí estoy de acuerdo en que es bueno separar ambas cosas. Sólo le añadiría un detalle, que es proporcionar URLs para los casos en que Javascript no está activado.

Es decir, por un lado HTML:
Código HTML:
<ul>
<li><a class="current" id="a_001" href="/001completo.html" target="_parent">001</a></li>
<li><a id="a_002" href="/002completo.html" target="_parent">002</a></li>
<li><a id="a_003" href="/003completo.html" target="_parent">003</a></li>
<li><a id="a_004" href="/004completo.html" target="_parent">004</a></li>
</ul> 
Por otro Javascript:
Código:
$(function() {
    $('div#menu ul li a').click(function() {
        $('p'+$(this).attr("id").slice("_")[1]).toggle('slow');
        return false;
    });
});

1. No hay nada de Javascript en el HTML. Que eso es algo BUENO.
2. Hay URLs por si el Javascript no está activado.
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 08:45.