Obtener el valor href local de la etiqueta anchor (a)


Tengo una etiqueta de anclaje que tiene un valor href local, y una función JavaScript que usa el valor href pero lo dirige a un lugar ligeramente diferente al que normalmente iría. La etiqueta parece

<a onclick="return follow(this);" href="sec/IF00.html"></a>

Y una función JavaScript que se parece a

baseURL = 'http://www.someotherdomain.com/';
function follow(item) {
    location.href = baseURL + item.href;
}

Esperaría que item.href simplemente devuelva una cadena corta de "sec/IF00.html", pero en su lugar devuelve el href completo, "http://www.thecurrentdomain.com/sec/IF00.html". ¿Hay alguna manera de que pueda sacar solo el corto href as put in the anchor <a> tag? ¿O pierdo eso por el comportamiento HTML natural?

Supongo que podría usar una manipulación de cadenas para hacer esto, pero se vuelve complicado porque mi página local en realidad puede ser "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", y mi campo href puede o no tener un subdirectorio en él (para ex href="page.html" vs. href="sub/page.html"), por lo que no siempre puedo eliminar todo antes de la última barra.

Usted puede preguntarse por qué estoy solicitando esto, y es porque solo hará que la página sea mucho más limpia. Si no es posible obtener solo el href corto (como se pone en la etiqueta anchor <a>), entonces probablemente podría insertar un campo adicional en la etiqueta, como link="sec/IF00.html", pero de nuevo, eso sería un poco más desordenado.

Author: Michael Plautz, 2013-03-15

5 answers

El siguiente código obtiene la ruta completa, donde los puntos de anclaje:

document.getElementById("aaa").href; // http://example.com/sec/IF00.html

Mientras que el siguiente obtiene el valor del atributo href:

document.getElementById("aaa").getAttribute("href"); // sec/IF00.html
 140
Author: aorcsik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-15 18:44:20

document.getElementById("link").getAttribute("href"); Si tiene más de una etiqueta <a>, por ejemplo:

<ul>
  <li>
    <a href="1"></a>
  </li>
  <li>
    <a href="2"></a>
  </li>
  <li>
    <a href="3"></a>
  </li>
</ul>

Puedes hacerlo así: document.getElementById("link")[0].getAttribute("href"); para acceder al primer array de etiquetas <a>, o depende de la condición que hagas.

 4
Author: Zange-chan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-23 12:46:59

La propiedad href establece o devuelve el valor del atributo href de un enlace.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);
 0
Author: M.Ganji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-17 07:15:56
document.getElementById("aaa").href; //for example: http://example.com/sec/IF00.html
 -1
Author: ntihin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-23 05:57:17

Triste ver cuántas personas dieron respuestas tan incómodas e inconvenientes. Aquí está la forma más fácil de recuperar href:

$("a").click(function(e){ 
      var hash = this.hash;
      alert(hash);
  });

Todo hecho en una sola línea de código. Esto es flexible y no se basa en obtener ElementId como las respuestas anteriores.

 -7
Author: Yash Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-28 15:45:04