2013-03-15 41 views
52

Tôi có một thẻ neo có giá trị href địa phương và một hàm JavaScript sử dụng giá trị href nhưng chuyển nó đến một nơi hơi khác so với bình thường. Thẻ trông giống nhưNhận giá trị href địa phương từ thẻ neo (a)

<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 rằng item.href sẽ chỉ trả lại một chuỗi ngắn "giây/IF00.html", nhưng thay vào đó nó sẽ trả về full href, "http : //www.thecurrentdomain.com/sec/IF00.html". Có cách nào mà tôi có thể rút ra chỉ là href ngắn như đặt trong neo <a> thẻ? Hay tôi làm mất điều đó bằng 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ó trở nên phức tạp vì trang địa phương của tôi có thể thực sự là "http : //www.thecurrentdomain.com/somedir/somepath/sec/IF00.html" và trường my href có thể hoặc có thể không có thư mục con trong đó (ví dụ: href="page.html" so với href="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 yêu cầu điều này, và đó là vì nó sẽ làm cho trang gọn gàng hơn rất nhiều. Nếu không thể chỉ nhận được href ngắn (như được đặt trong thẻ neo <a>), thì tôi có thể chỉ cần chèn một trường bổ sung vào thẻ, như link="sec/IF00.html", nhưng một lần nữa, điều đó sẽ hơi lộn xộn hơn một chút.

Trả lời

116

Mã dưới đây được đường dẫn đầy đủ, nơi các điểm neo:

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

trong khi một dưới đây được giá trị của thuộc tính href:

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

OP đã cố gắng điều đó và không cung cấp cho anh ta kết quả mong muốn. – Bobort

0

Các bộ tài sản href 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); 
4

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

-4

Rất tiếc khi biết có bao nhiêu người đã đưa ra những câu trả lời khó chịu và bất tiện như vậy. Dưới đây là cách dễ nhất để lấy href:

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

Tất cả được thực hiện chỉ trong một dòng mã. Điều này là linh hoạt và không dựa vào việc nhận elementId như các câu trả lời trước đó.

+0

Lỗi tham chiếu '$' là không xác định (câu hỏi không được sử dụng jQuery và thẻ tag [tag: javascript] wiki nói không cho câu trả lời jQuery cho các câu hỏi mà không có thẻ [tag: jquery] – Quentin

+0

'var hash = this.hash ; 'Thuộc tính' hash' không chứa giá trị thô của thuộc tính 'href' (trừ một số trường hợp cụ thể không áp dụng cho ví dụ trong câu hỏi) – Quentin

+0

Các bạn sai, nó không hoạt động cho mã của bạn nhưng nó làm việc cho tất cả mọi người tôi đề nghị.Tôi đã nhận được 8 thích trên youtube với đề nghị này.Vì vậy, xin vui lòng không thích bình luận.Đối với lỗi tham khảo.Điều này rõ ràng phải được trong một phương pháp –

Các vấn đề liên quan