แท็ก HTML <a> ต้องการเพิ่มทั้ง href และ onclick working


123

ฉันต้องการถามเกี่ยวกับแท็ก HTML

<a href="www.mysite.com" onClick="javascript.function();">Item</a>

วิธีการนี้ทำให้แท็กทำงานกับhrefและonClick ? (ชอบใช้ onClick ก่อนแล้วจึง href)

คำตอบ:


232

คุณมีสิ่งที่คุณต้องการแล้วโดยมีการเปลี่ยนแปลงไวยากรณ์เล็กน้อย:

<a href="www.mysite.com" onclick="return theFunction();">Item</a>

<script type="text/javascript">
    function theFunction () {
        // return true or false, depending on whether you want to allow the `href` property to follow through or not
    }
</script>

พฤติกรรมเริ่มต้นของ<a>แท็กonclickและhrefคุณสมบัติคือการดำเนินการonclickจากนั้นทำตามhrefตราบใดที่onclickไม่ส่งคืนfalseยกเลิกเหตุการณ์ (หรือเหตุการณ์ไม่ได้รับการป้องกัน)


มีวิธีดำเนินการกับฟังก์ชัน element.addEventListener หรือไม่
TheEquah

4
ใช้ไม่ได้กับฉันจนกว่าฉันจะใส่href="#"URL จริงแทน
yegor256

ฉันใช้ laravel framework ดังนั้นในมุมมองเบลดของฉันฉันรวมสิ่งนี้ไว้มันใช้งานไม่ได้มีใครลองใช้ laravel บ้างไหม
Vajira Prabuddhaka

วิธีนี้ใช้ไม่ได้ถ้าฉันมีวิธีการดำเนินการใด ๆ ที่เรียกในตัวควบคุม mvc ใน href ใครช่วยได้บ้าง
DharaPPatel

10

ใช้jQuery คุณต้องจับภาพclickเหตุการณ์จากนั้นไปที่เว็บไซต์

$("#myHref").on('click', function() {
  alert("inside onclick");
  window.location = "http://www.google.com";
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" id="myHref">Click me</a>


12
ฉันจะไม่ใช้กรอบจาวาสคริปต์ใด ๆ แต่ขอบคุณสำหรับคำตอบ

7
ด้านบนไม่ใช่ลิงค์จริง ไม่สามารถเปิดในแท็บใหม่ได้และเป็นการปฏิบัติที่แย่มาก หากบางสิ่งสามารถเปิดได้ในแท็บใหม่ (มี na url) ให้เพิ่มhrefแอตทริบิวต์ที่มีความหมายเสมอ
Nux

2

เพื่อให้บรรลุการใช้ html ต่อไปนี้:

<a href="www.mysite.com" onclick="make(event)">Item</a>

<script>
    function make(e) {
        // ...  your function code
        // e.preventDefault();   // use this to NOT go to href site
    }
</script>

นี่เป็นตัวอย่างการทำงาน


สิ่งนี้ใช้ได้กับฉันใน Chrome แต่ดูเหมือนว่า Safari จะเรียกใช้ฟังก์ชันนี้ แต่ไม่เปิด href ... มีข้อเสนอแนะใด ๆ
เบ็น

@ เบ็นฉันทำการทดสอบซอโดยไม่ใช้ JS - เฉพาะ html บริสุทธิ์: <a href="http://example.com" >Item</a>และใน Chrome ฉันเห็นข้อความบางอย่างที่อนุญาตให้หน้าเรียกใช้ลิงค์นี้ (แจ้งเตือนที่ส่วนท้ายของแถบ URL ของ Chrome) ในซาฟารีในคอนโซลฉันเห็นว่า warrning: [ถูกบล็อก] หน้าเว็บที่fiddle.jshell.net/_displayไม่ได้รับอนุญาตให้แสดงเนื้อหาที่ไม่ปลอดภัยจากexample.com - นั่นอาจเป็นปัญหาด้านความปลอดภัย (เฉพาะในซอเท่านั้น)
Kamil Kiełczewski

1

ไม่จำเป็นต้องใช้ jQuery

บางคนบอกใช้onclickเป็นการฝึกที่ไม่ดี ...

ตัวอย่างนี้ใช้จาวาสคริปต์เบราว์เซอร์ล้วนๆ ตามค่าเริ่มต้นดูเหมือนว่าตัวจัดการการคลิกจะประเมินก่อนการนำทางดังนั้นคุณสามารถยกเลิกการนำทางและดำเนินการเองได้หากต้องการ

<a id="myButton" href="http://google.com">Click me!</a>
<script>
    window.addEventListener("load", () => {
        document.querySelector("#myButton").addEventListener("click", e => {
            alert("Clicked!");
            // Can also cancel the event and manually navigate
            // e.preventDefault();
            // window.location = e.target.href;
        });
    });
</script>

-1

ใช้ng-clickแทนonclick. และมันง่ายอย่างที่:

<a href="www.mysite.com" ng-click="return theFunction();">Item</a>

<script type="text/javascript">
function theFunction () {
    // return true or false, depending on whether you want to allow 
    // the`href` property to follow through or not
 }
</script>

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