วิธีเรียกใช้ฟังก์ชัน JavaScript แทน href ใน HTML


86

ฉันมีตัวอย่างใน HTML

<a href="javascript:ShowOld(2367,146986,2)"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

ฉันได้รับการตอบกลับจากเซิร์ฟเวอร์เมื่อฉันส่งคำขอ

ด้วยการจำลองนี้ฉันได้รับคำตอบของคำขอ AJAX ที่ส่งรหัสของฉันไปยังเซิร์ฟเวอร์

ทุกอย่างเรียบร้อยดี แต่เมื่อฉันคลิกที่ลิงค์เบราว์เซอร์ต้องการเปิดฟังก์ชันเป็นลิงค์ ความหมายหลังจากคลิกฉันเห็นแถบที่อยู่เป็น

javascript:ShowOld(2367,146986,2)

หมายถึงเบราว์เซอร์ที่เป็น url ถ้าฉันต้องการทำสิ่งนี้ใน firebug ที่ใช้งานได้ ตอนนี้ฉันต้องการทำเช่นนั้นเมื่อทุกคนคลิกลิงก์เบราว์เซอร์จะพยายามเรียกใช้ฟังก์ชันที่โหลดไว้แล้วใน DOM แทนที่จะพยายามเปิดในเบราว์เซอร์


คำถามที่คล้ายกันได้รับคำตอบใน Stackoverflow เอง stackoverflow.com/questions/1070760/…
Scaria Sebastian

คำตอบ:


195

ไวยากรณ์นั้นควรใช้งานได้ดี แต่คุณสามารถลองทางเลือกนี้ได้

<a href="javascript:void(0);" onclick="ShowOld(2367,146986,2);">

หรือ

<a href="javascript:ShowOld(2367, 146986, 2);">

คำตอบที่อัปเดตสำหรับ STRING VALUES

หากคุณกำลังส่งผ่านสตริงให้ใช้เครื่องหมายคำพูดเดี่ยวสำหรับพารามิเตอร์ของฟังก์ชันของคุณ

<a href="javascript:ShowOld('foo', 146986, 'bar');">

จะส่งสตริงหนีเครื่องหมายคำพูดคู่ในอาร์กิวเมนต์ได้อย่างไร H = ตัวอย่างมีเฉพาะจำนวนเต็ม
jeffry copps

1
@jeffrycopps ลองใช้เครื่องหมายคำพูดเดียวในฟังก์ชันของคุณ
ineedme

@ineedme คำตอบอัปเดตด้วยข้อมูลดังกล่าว ขอบคุณ.
Dutchie432

9

หากคุณมีเพียง "ตัวจัดการเหตุการณ์คลิก" ให้ใช้<button>แทน ลิงก์มีความหมายเฉพาะ

เช่น:

<button onclick="ShowOld(2367,146986,2)">
    <img title="next page" alt="next page" src="/themes/me/img/arrn.png">
</button>

มีวิธีใดบ้างที่จะทำให้ปุ่มดูเหมือนลิงค์แทนที่จะเป็นปุ่ม?
Ben Page

@ เบ็นเพจ: ใช่กับ CSS อย่างน้อยคุณก็จะได้รับการประมาณที่ดี ดูคำตอบและความคิดเห็นของฉันที่นี่: stackoverflow.com/questions/4842953/or-javascriptvoid0/…
Felix Kling

7

พยายามทำให้จาวาสคริปต์ของคุณไม่สร้างความรำคาญ:

  • คุณควรใช้ลิงก์จริงในแอตทริบิวต์ href
  • และเพิ่มผู้ฟังในเหตุการณ์คลิกเพื่อจัดการกับ ajax

hrefเป็นทางเลือกเพียงละเว้น
Colin 't Hart

แท็กคือจุดยึด ไม่จำเป็นต้องมีลิงค์
Colin 't Hart

5

ฉันใช้ CSS เล็กน้อยในช่วงเวลาหนึ่งเพื่อให้ดูเหมือนลิงค์ดังนี้:

CSS:

.link {
    color:blue;
    text-decoration:underline;
    cursor:pointer;
}

HTML:

<span class="link" onclick="javascript:showWindow('url');">Click Me</span>

JAVASCRIPT:

function showWindow(url) {
    window.open(url, "_blank", "directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
}

พารามิเตอร์ฟังก์ชัน 'url' ด้านบนทำให้ฉันมีสตริง "url" แทน url จริง
visrahane

คุณควรใส่ URL จริงในฟังก์ชัน showWindow ตัวอย่างเช่น: javascript: showWindow (' stackoverflow.com' );
tolsen64

ฉันไม่สามารถฮาร์ดโค้ดได้เนื่องจากฉันกำลังสร้างโดยใช้ dom และฉันไม่สามารถควบคุม url ได้
visrahane

3

คุณควรแยกจาวาสคริปต์ออกจาก HTML ด้วย
HTML:

<a href="#" id="function-click"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a>

จาวาสคริปต์:

myLink = document.getElementById('function-click');
myLink.onclick = ShowOld(2367,146986,2);

ตรวจสอบให้แน่ใจว่าบรรทัดสุดท้ายในฟังก์ชัน ShowOld คือ:

return false;

เพราะจะหยุดไม่ให้เปิดลิงค์ในเบราว์เซอร์


1
hrefเป็นทางเลือกเพียงละเว้น
Colin 't Hart

3

<a href="#" onclick="javascript:ShowOld(2367,146986,2)">


9
ไม่ใช่วิธีแก้ปัญหาที่ดีที่สุดเนื่องจากจะข้ามไปที่ด้านบนของหน้า
Alex Marshall

1
สำหรับ href แทนการ#ใช้งานhref="javascript:void(0)
Narayan

1
hrefเป็นทางเลือกเพียงละเว้น
Colin 't Hart

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