รับค่า 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"vs. href="sub/page.html") ดังนั้นฉันจึงไม่สามารถลบทุกอย่างก่อนเครื่องหมายทับสุดท้ายได้เสมอไป

คุณอาจสงสัยว่าทำไมฉันถึงขอสิ่งนี้และเป็นเพราะมันจะทำให้หน้าสะอาดขึ้นมาก หากไม่สามารถรับเพียง href สั้น ๆ (ตามที่ใส่ไว้ใน<a>แท็กจุดยึด) ฉันก็อาจจะแค่แทรกฟิลด์พิเศษลงในแท็กเช่นlink="sec/IF00.html"แต่อีกครั้งนั่นจะยุ่งกว่าเล็กน้อย

คำตอบ:


256

โค้ดด้านล่างได้รับเส้นทางแบบเต็มโดยที่จุดยึด:

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
OP ได้ลองใช้แล้วและไม่ได้ผลลัพธ์ที่ต้องการ
Bobort
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.