从锚点(a标签)中获取本地href值

203

我有一个锚点标签,它的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",但实际上它返回了完整的链接"http://www.thecurrentdomain.com/sec/IF00.html"。是否有办法可以仅提取放在锚点<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",但这会使页面变得有点混乱。

7个回答

409
下面的代码获取锚点所在的完整路径:
document.getElementById("aaa").href; // http://example.com/sec/IF00.html

而下面的代码会获取 href 属性的值:

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

9

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>标签数组,或者根据你的条件来决定。

6
在我的情况下,我有一个带有#的href,并且target.href为我返回完整的URL。Target.hash对我起了作用。
$(".test a").on('click', function(e) {
    console.log(e.target.href); // logs https://www.test.com/#test
    console.log(e.target.hash); // logs #test
  });

6

这段代码可以获取文档中的所有链接。

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

1

href属性设置或返回链接的href属性的值。

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

0
这对我有用
document.getElementsByTagName('a')[0].getAttribute('href');

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

2
OP已经尝试过了,但它并没有给他想要的结果。 - Bobort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接