วิธีเปลี่ยน href ของแท็ก <a> ที่ปุ่มคลิกผ่าน javascript


127

จะเปลี่ยนhrefค่าแอตทริบิวต์ของ<a/>แท็กผ่าน Javascript เมื่อคลิกปุ่มได้อย่างไร?

<script type="text/javascript">
  function f1()
  {
    document.getElementById("abc").href="xyz.php"; 
  }
</script>

<a href="" id="abc">jhg</a>
<a href="" id="" onclick="f1()">jhhghj</a>

วิธีการเข้าถึงกำหนดให้ไม่ใช้ลิงก์ในลักษณะนี้ ที่นี่: xkr.us/js/links
ให้คำปรึกษาฟรี

คำตอบ:


177

หากไม่มีhrefการคลิกการคลิกจะโหลดหน้าปัจจุบันซ้ำดังนั้นคุณต้องมีสิ่งนี้:

<a href="#" onclick="f1()">jhhghj</a>

หรือป้องกันการเลื่อนเช่นนี้:

<a href="#" onclick="f1(); return false;">jhhghj</a>

หรือreturn falseในf1ฟังก์ชันของคุณและ:

<a href="#" onclick="return f1();">jhhghj</a>

.... หรือวิธีที่ไม่เป็นการรบกวน:

<a href="#" id="abc">jhg</a>
<a href="#" id="myLink">jhhghj</a>

<script type="text/javascript">
  document.getElementById("myLink").onclick = function() {
    document.getElementById("abc").href="xyz.php"; 
    return false;
  };
</script>

แนะนำเพิ่มevent && event.preventDefault && event.preventDefault();ก่อนreturn false
袁文涛

34

สิ่งที่ Nick Carver ทำที่นั่น แต่ฉันคิดว่ามันจะดีที่สุดถ้าใช้วิธี DOM setAttribute

<script type="text/javascript">
   document.getElementById("myLink").onclick = function() {
   var link = document.getElementById("abc");
   link.setAttribute("href", "xyz.php");
   return false;
   }
</script>

เป็นโค้ดพิเศษหนึ่งบรรทัด แต่พบว่ามีโครงสร้างที่ดีกว่า


8
IMO ไม่จำเป็นที่นี่นี่เป็นคุณสมบัติ DOM ตลอดไปใช้.hrefงานได้ในทุกเบราว์เซอร์ ... ตัวอย่างเช่นคุณจะใช้.getAttribute("id")แทน just .id? :)
Nick Craver

3
คุณพูดถูกมันไม่ได้ทำอะไรพิเศษหรือแตกต่าง แต่เป็นโครงสร้างที่ชาญฉลาด ฉันชอบมีฟังก์ชัน DOM ทั้งหมดของฉันด้วยวิธีนี้สำหรับการดีบัก / ตรวจสอบในภายหลัง: ฉันเห็นว่าฟังก์ชันนี้ทำอะไรได้ง่ายกว่าด้วยวิธีนี้ เห็นได้ชัดว่าคำตอบของคุณอยู่ที่เงิน :)
jakobhans

7

ลบhrefแอตทริบิวต์:

<a id="" onclick="f1()">jhhghj</a>

หากรูปแบบลิงก์มีความสำคัญ:

<a href="javascript:void(f1())">jhhghj</a>

1
<a>แท็กโดยไม่ต้องhrefแอตทริบิวต์? อะไร? ทำไม?
Shikiryu

1
การออกจาก href จะเปลี่ยนรูปแบบและพฤติกรรม จากนั้นทำหน้าที่เป็นจุดยึดแทนการเชื่อมโยง
Cobra_Fast

1
ขอบคุณสำหรับการตอบกลับพวกคุณช่วยฉันได้จริงๆ
Chauhan

1
ไม่มี href ทำให้เป็นจุดยึดคลิกแปลงเป็นลิงค์ค่อนข้างปกติ
ให้คำปรึกษาฟรี

1
<a href="#" id="a" onclick="ChangeHref()">1.Change 2.Go</a>

<script>
function ChangeHref(){
document.getElementById("a").setAttribute("onclick", "location.href='http://religiasatanista.ro'");
}
</script>

0

หากต้องการเปลี่ยนลิงค์แบบไดนามิกเมื่อคลิก:

<input type="text" id="emailOfBookCustomer" style="direction:RTL;"></input>
        <a 
         onclick="this.href='<%= request.getContextPath() %>/Jahanpay/forwardTo.jsp?handle=<%= handle %>&Email=' + document.getElementById('emailOfBookCustomer').value;" href=''>
    A dynamic link 
            </a>

0

นี่คือสิ่งที่ฉันทำ ฉันต้องการสร้าง URL โดยรวบรวมค่าจากกล่องข้อความเมื่อผู้ใช้กดปุ่มส่ง

<html>
<body>

Hi everyone

<p id="result"></p>

<textarea cols="40" id="SearchText" rows="2"></textarea>

<button onclick="myFunction()" type="button">Submit!</button>

<script>
function myFunction() {
    var result = document.getElementById("SearchText").value;
	document.getElementById("result").innerHTML = result;
	document.getElementById("abc").href="http://arindam31.pythonanywhere.com/hello/" + result;
}		
</script>


<a href="#" id="abc">abc</a>

</body>
<html>


-1

ฉันรู้ว่ามันเป็นโพสต์เก่า ๆ ถึงกระนั้นมันอาจช่วยได้บ้าง

แทนที่จะใช้แท็กถ้าเป็นไปได้คุณก็ทำได้เช่นกัน

 <script type="text/javascript">
        function IsItWorking() {
          // Do your stuff here ...
            alert("YES, It Works...!!!");
        }
    </script>   

    `<asp:HyperLinkID="Link1"NavigateUrl="javascript:IsItWorking();"`            `runat="server">IsItWorking?</asp:HyperLink>`

มีความคิดเห็นเกี่ยวกับเรื่องนี้ไหม

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