Nhận giá trị href cục bộ từ thẻ anchor (a)


121

Tôi có một thẻ liên kết có giá trị href cục bộ và một hàm JavaScript sử dụng giá trị href nhưng hướng nó đến một vị trí hơi khác so với bình thường. Thẻ trông giống như

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

và một hàm JavaScript trông giống như

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

Tôi mong đợi điều đó item.hrefsẽ chỉ trả về một chuỗi ngắn "sec / IF00.html", nhưng thay vào đó, nó trả về href đầy đủ, "http://www.thecurrentdomain.com/sec/IF00.html". Có cách nào để tôi có thể lấy ra chỉ href ngắn như được đặt trong <a>thẻ liên kết không? Hay tôi đánh mất điều đó bởi hành vi HTML tự nhiên?

Tôi cho rằng tôi có thể sử dụng thao tác chuỗi để thực hiện việc này, nhưng nó khá phức tạp vì trang cục bộ của tôi thực sự có thể là "http://www.thecurrentdomain.com/somedir/somepath/sec/IF00.html" và trường href của tôi có thể hoặc có thể không có một thư mục con trong nó (cho ex href="page.html"vshref="sub/page.html" ), vì vậy tôi không thể luôn xóa mọi thứ trước dấu gạch chéo cuối cùng.

Bạn có thể thắc mắc tại sao tôi lại yêu cầu điều này, và đó là vì nó sẽ giúp trang sạch hơn rất nhiều. Nếu không thể chỉ lấy href ngắn (như được đặt trong <a>thẻ liên kết), thì tôi có thể chỉ cần chèn một trường bổ sung vào thẻ, giống như link="sec/IF00.html", nhưng một lần nữa, điều đó sẽ phức tạp hơn một chút.

Câu trả lời:


255

Đoạn mã dưới đây nhận được đường dẫn đầy đủ, nơi các điểm neo chỉ:

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

trong khi cái bên dưới nhận giá trị của hrefthuộc tính:

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

6

document.getElementById("link").getAttribute("href"); Nếu bạn có nhiều hơn một <a>thẻ, ví dụ:

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

Bạn có thể làm như sau: document.getElementById("link")[0].getAttribute("href");để truy cập vào mảng <a>thẻ đầu tiên , hoặc tùy thuộc vào điều kiện bạn thực hiện.


2

Mã này hoạt động để tôi có được tất cả các liên kết của tài liệu

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

0

Thuộc tính href đặt hoặc trả về giá trị của thuộc tính href của một liên kết.

  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
OP đã thử điều đó, và nó không mang lại cho anh ta kết quả mong muốn.
Bobort
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.