2013-03-15 2 views
52

У меня есть привязывающий тег, который имеет локальное значение href и функцию JavaScript, которая использует значение href, но направляет его в несколько другое место, чем обычно. Тег выглядитПолучить локальное значение href из привязки (a) tag

<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 бы просто вернуть короткую строку «с/IF00.html», но вместо этого он возвращает full href, "http : //www.thecurrentdomain.com/sec/IF00.html". Есть ли способ, чтобы я мог вытащить только короткий href, как положить в якорь <a> тег? Или я теряю это благодаря естественному поведению HTML?

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

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

ответ

116

Код ниже получает полный путь, где опорные точки:

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

в то время как один ниже получает значение атрибута href:

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

ОП уже пробовал это, и он не дает ему желаемых результатов. – Bobort

0

The HREF наборы свойств или возвращает значение атрибута href для ссылки.

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

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> тегов , или зависит от вашего состояния.

-4

Удовлетворительно, чтобы узнать, сколько людей дали такие неудобные и неудобные ответы. Вот самый простой способ получить HREF:

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

Все сделано только одна строка кода. Это гибкий подход и не полагается на получение элемента, как предыдущие ответы.

+0

Ссылка Ошибка '$' не определена (вопрос не использует jQuery, а тег wiki тега [tag: javascript] говорит, что он не дает jQuery ответы на вопросы без тега [tag: jquery]. – Quentin

+0

'var hash = this.hash ; 'Свойство' hash' не содержит необработанное значение атрибута 'href' (за исключением определенных конкретных обстоятельств, которые не относятся к примеру в вопросе) – Quentin

+0

Вы, ребята, ошибаетесь. Это не работает для вашего кода но это работает для всех, кого я предлагал. Мне было так понравилось 8 youtube с этим предложением. Так что, пожалуйста, не нравится комментарий. Что касается эталонной ошибки, это должно быть в методе –