Отримайте локальне значення href з тегу anchor (a)


121

У мене є тег прив’язки, який має місцеве значення href, і функцію JavaScript, яка використовує значення href, але спрямовує його на дещо інше місце, ніж зазвичай. Тег виглядає так

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

і функція JavaScript, яка виглядає так

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

Я б очікував, що item.hrefце просто поверне короткий рядок "sec / IF00.html", але замість цього він поверне повний href, "http://www.thecurrentdomain.com/sec/IF00.html". Чи є спосіб, що я можу витягнути лише той короткий href, як розміщений у <a>тезі якоря ? Або я втрачаю це природним поведінкою HTML?

Я вважаю, що я можу використовувати маніпуляцію з рядком, щоб зробити це, але це стає складним, оскільки моя локальна сторінка насправді може бути "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html", і моє поле href може або може не мати в ньому підкаталога (наприклад, href="page.html"проти href="sub/page.html"), тому я не можу завжди просто видалити кожну річ перед останньою косою рисою.

Вам може бути цікаво, чому я прошу цього, і це тому, що це просто зробить сторінку набагато чистішою. Якщо неможливо отримати лише короткий href (як поміщено в <a>тег прив’язки ), я, ймовірно, міг би просто вставити додаткове поле в тег, як link="sec/IF00.html", але, знову ж таки, це було б трохи месиє.

Відповіді:


255

Наведений нижче код отримує повний шлях, де вказує якір:

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

при цьому той, що нижче, отримує значення hrefатрибута:

document.getElementById("aaa").getAttribute("href"); // sec/IF00.html

6

document.getElementById("link").getAttribute("href"); Якщо у вас є більше одного <a>тегу, наприклад:

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

Ви можете зробити так: document.getElementById("link")[0].getAttribute("href");щоб отримати доступ до першого масиву <a>тегів, або це залежить від умови, яку ви створюєте.


2

Цей код працює для мене, щоб отримати всі посилання документа

var links=document.getElementsByTagName('a'), hrefs = [];
for (var i = 0; i<links.length; i++)
{   
    hrefs.push(links[i].href);
}

0

Властивість href встановлює або повертає значення атрибута href для посилання.

  var hello = domains[i].getElementsByTagName('a')[0].getAttribute('href');
    var url="https://www.google.com/";
    console.log( url+hello);

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

2
ОП вже пробувала це, і це не дає йому бажаних результатів.
Бобборт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.