Foros del Web » Programando para Internet » Javascript »

Saber si existe un punto de ancla JS

Estas en el tema de Saber si existe un punto de ancla JS en el foro de Javascript en Foros del Web. Hola, vengo a preguntaros sobre un tema que me lleva de cabeza. Tengo un código PHP que va generando puntos de ancla con letras es ...
  #1 (permalink)  
Antiguo 10/10/2013, 14:06
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Saber si existe un punto de ancla JS

Hola,
vengo a preguntaros sobre un tema que me lleva de cabeza.
Tengo un código PHP que va generando puntos de ancla con letras es decir:
Código HTML:
<a name="a"></a> <a name="b"></a> 
pero no se incluyen todas las letras.
Lo que quería hacer es la típica barrita con todas las letras arriba de las letras para ir directamente a cada una de ellas:
Código HTML:
| <a href="pagina.php#a">A</a> | <a href="pagina.php#letra">Letra</a> etc
pero, como he dicho, no todas las letras se incluyen entonces pensé que podría con un for y un array ir escribiendo todas las letras con las barritas y los enlaces sin necesidad de ir poniendolas una a una pero surgió el problema de que ciertas anclas no existian y me daban errores (lógicamente). Entonces me preguntaba si había alguna forma de detectar las anclas creadas y a esas letras ponerles el enlace y a las demás no. Ej:
Código HTML:
| <a href="pagina.php#a">A</a> | B | C | <a href="pagina.php#d">D</a>
<a name="a"></a><br>
alocado<br>
etc...<br>
<a name="d"></a><br>
disturbio<br>
etc...<br> 
En el codigo anterior solo aparecen con enlace la A y la D porque son las únicas que tienen sus respectivos puntos de ancla.
Espero haberme explicado bien y sobretodo que haya una solución porque me ha costado bastante escribir esta parrafada xDD.
Atentamente,
Cristian Molina
  #2 (permalink)  
Antiguo 10/10/2013, 14:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Saber si existe un punto de ancla JS

bueno, con document.getElementByName('a') == null te podría decir, aunque puede existir otra forma
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 10/10/2013, 14:49
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Saber si existe un punto de ancla JS

Hola, lo acabo de probar y no me funciona. Aqui dejo el código que he usado:
Código Javascript:
Ver original
  1. letras=new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  2. for(i=0;i<letras.length;i++) {                           
  3.    if(document.getElementsByName(letras[i].toUpperCase())!=null) //si existe el punto de ancla
  4.     document.write(' | <a href="lista.php#'+letras[i].toUpperCase()+'">'+letras[i].toUpperCase()+'</a>');
  5.    else
  6.         document.write(' | '+letras[i].toUpperCase());
  7.                                 }
  8. document.write(" |");

Recuerdo que los puntos de ancla son generados posteriormente por un código php. No se si influirá porque he probado a poner el script despues del código php y tampoco funciona.

Última edición por legomolina; 10/10/2013 a las 15:02
  #4 (permalink)  
Antiguo 10/10/2013, 15:42
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Saber si existe un punto de ancla JS

a simple vista, hay un par de razones por la que no puede funcionar.

getElementsByName retorna una colección de elementos, de tal modo que lo correcto es
Cita:
document.getElementsByName(letras[i].toUpperCase())[0]
por otro lado, el uso de write, destruye todo. en su lugar crea un elemento (div, span, ...) y usa innerHTML
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 11/10/2013, 06:08
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Saber si existe un punto de ancla JS

Hola IsaBelM,
he reescrito el código conforme a lo que me sugeriste:
Código Javascript:
Ver original
  1. <div id="letras">
  2. <script language="javascript" type="text/javascript">
  3. letras=new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  4.      for(i=0;i<letras.length;i++) {
  5.           if(document.getElementsByName(letras[i].toUpperCase())[0])
  6.                 document.getElementById('letras').innerHTML=' | <a href="lista.php#'+letras[i].toUpperCase()+'">'+letras[i].toUpperCase()+'</a>';
  7.           else
  8.                document.getElementById('letras').innerHTML=' | '+letras[i].toUpperCase();
  9. }
  10. </script>
  11.   |
  12. </div>
y funciona pero no, es decir, ahora solo me muestra la Z, la última letra, pero me la muestra sin enlace, es decir, correctamente ya que solo tengo los puntos de ancla para la A, la D, la M de momento.
He puesto el div y he sustituido el write por innerHTML. Pero sigue sin funcionar :(.
Igual le estoy exigiendo demasiado a JavaScript... xD
Gracias de todas formas IsaBelM, a ver si alguien encuentra una solución.
Atentamente, Cristian Molina
  #6 (permalink)  
Antiguo 11/10/2013, 07:30
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Saber si existe un punto de ancla JS

¡buenas gentes!
me asalta la inquietud... si estás creando los anclas desde php, ¿por qué no haces el listado de enlaces también en php? ¿tienes forma de determinar cuales anclas se han creado antes de crear el listado de enlaces? pienso yo, mientras sea posible trabajar eso en un solo entorno, más cómodo podría resultar.

en javascript se puede hacer algo, pero en tu caso particular el problema es que no hay ninguna referencia disponible que sirva como indicación de cuales anclas han sido creados. hay una posibilidad de que se pueda hacer utilizando document.anchors, pero tienes que hacer un proceso de análisis y filtrado. document.anchors devuelve una colección de elementos que tienen definido un ancla (atribudo name). sería cuestión de recorrer esa lista, analizar el atributo name, y crear el enlace.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 11/10/2013, 09:45
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 13 años, 8 meses
Puntos: 14
Respuesta: Saber si existe un punto de ancla JS

Cita:
Iniciado por legomolina Ver Mensaje
Hola IsaBelM,
he reescrito el código conforme a lo que me sugeriste:
Código Javascript:
Ver original
  1. <div id="letras">
  2. <script language="javascript" type="text/javascript">
  3. letras=new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  4.      for(i=0;i<letras.length;i++) {
  5.           if(document.getElementsByName(letras[i].toUpperCase())[0])
  6.                 document.getElementById('letras').innerHTML=' | <a href="lista.php#'+letras[i].toUpperCase()+'">'+letras[i].toUpperCase()+'</a>';
  7.           else
  8.                document.getElementById('letras').innerHTML=' | '+letras[i].toUpperCase();
  9. }
  10. </script>
  11.   |
  12. </div>
y funciona pero no, es decir, ahora solo me muestra la Z, la última letra, pero me la muestra sin enlace, es decir, correctamente ya que solo tengo los puntos de ancla para la A, la D, la M de momento.
He puesto el div y he sustituido el write por innerHTML. Pero sigue sin funcionar :(.
Igual le estoy exigiendo demasiado a JavaScript... xD
Gracias de todas formas IsaBelM, a ver si alguien encuentra una solución.
Atentamente, Cristian Molina
Si no estoy muy equivocado, .innerHTML lo que hace es ir machacando el contenido HTML y de ahí que sólo te muestre la Z.... ¿podrías probar a poner .appendHTML? A ver qué sucede y nos cuentas.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #8 (permalink)  
Antiguo 11/10/2013, 09:57
Avatar de legomolina  
Fecha de Ingreso: junio-2011
Ubicación: Valencia
Mensajes: 165
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Saber si existe un punto de ancla JS

Cita:
Iniciado por madman_18 Ver Mensaje
Si no estoy muy equivocado, .innerHTML lo que hace es ir machacando el contenido HTML y de ahí que sólo te muestre la Z.... ¿podrías probar a poner .appendHTML? A ver qué sucede y nos cuentas.
Con appendHTML no aparece nada, pero a raíz de eso he probado innerHTML+="";
Pero de todas formas creo que la solución está en la que da zerokilled, es decir, escribir las letras tambien en php y así me quito el javascript.
Gracias a todos por ayudarme a resolver este problema.

Etiquetas: js, php, punto
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 23:29.