Soru köprü tıklatmasında javascript işlevini çağır


Dinamik olarak ASP.NET dosyasının arkasındaki c # kodunda bir köprü oluşturuyorum. İstemci tıklamasında bir JavaScript işlevi çağırmam gerekiyor. Bunu nasıl başarabilirim?


76
2017-08-12 12:32


Menşei


olası kopyası Javascript çağrısı için bir bağlantı nasıl kullanılır? - Trilarion


Cevaplar:


Neater hala, yerine typical href="#" veya href="javascript:void" veya href="whatever"Bence bu daha mantıklı geliyor:

var el = document.getElementById('foo');
el.onclick = showFoo;


function showFoo() {
  alert('I am foo!');
  return false;
}

<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>

Javascript başarısız olursa, bazı geri bildirim var. Ayrıca, düzensiz davranış (durumunda atlama sayfa href="#", aynı sayfayı ziyaret halinde href="") elimine edilir.


118
2017-08-12 12:40



+1 Bu şu anda tek göze çarpan cevaptır. Yapabilseydim +100. - James
@Lewis, yes, ideal olarak <a> etiketleri saf js çağrıları için kullanılmazdı, ancak ne yazık ki daha eski tarayıcılar desteklemiyordu: link olmayan elemanlar için gezin. Bu yüzden js olaylarını tetiklemek için bağlantılar sık ​​sık kullanıldı. - Chris Van Opstal
@Chris - Benim amacım Chris'i aldığınızdan emin değilim. <a href="#"> Hiçbir şey yapma </a> 'yı kullanmadığınızı ve bunun yerine <a href="a/link/somwhere.html"> bir şeyler yap </a> ’ı kullanmayı ve ardından href'i geçersiz kılmak için aşamalı geliştirme. Bu en temiz çözümdür. Ankrajlar iyidir, ancak javascript devre dışı bırakılmışsa veya bazı nedenlerden dolayı (IE6'ya göre), işleyici oluşturulmadan ve atanmadan önce bazı javascript kırılmışsa, SOMETHING yapmalıdırlar. Bu şekilde tüm kullanıcılarınız mutludur. - Lewis
Benim için çalışmıyor, sayfa yüklemesinde otomatik olarak onclick işlevini çalıştırır. Bu aynı zamanda erişilebilirliğin söz konusu olduğu bir kabus gibi görünüyor. - Shawn Solomon
Bu işe yaramıyor, sadece sizi href url'ye yönlendiriyor. - poepje


Hepsinin en basit cevabı ...

<a href="javascript:alert('You clicked!')">My link</a>

Ya da javascript işlevini arama sorusunu cevaplamak için:

<script type="text/javascript">
function myFunction(myMessage) {
    alert(myMessage);
}
</script>

<a href="javascript:myFunction('You clicked!')">My link</a>


46
2017-09-11 23:54



Javascript olmayan programcılara yardım etmek için gönderilen bir nimet var. teşekkürler Jayden! - Fattie
Bu firefox'ta çalışmıyor gibi görünüyor - Anthony
Anthony firefox'ta iyi çalışıyor gibi görünüyor. - Jayden Lawson


Onclick parametresiyle ...

<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>

23
2017-08-12 12:35





JQuery cevabı. JQuery'yi geliştirmek için JavaScript icat edildiğinden, JQuery'de buna bir örnek veriyorum:

<div class="menu">
    <a href="http://example.org">Example</a>
    <a href="http://foobar.com">Foobar.com</a>
</div>

<script>
jQuery( 'div.menu a' )
    .click(function() {
        do_the_click( this.href );
        return false;
    });

// play the funky music white boy
function do_the_click( url )
{
    alert( url );
}
</script>

13
2017-08-12 13:28



JQuery geliştirmek için JavaScript icat edildi? Bu yeni bir tane! - palswim
Bu Lego'un Lego Batman'i inşa etmek için icat edildiğini okumak gibiydi. - Shawn Solomon
@ShawnSolomon Ben katılıyorum mutluyum :) - elcuco
@elcuco, harika alay! + 'd :) Uzun Canlı JQuery - Zuul


İdeal olarak, kodunuzdaki bağlantıların oluşturulmasını önlemek istiyorum çünkü kodunuz, her bir bağlantının 'biçimlendirmesinde' bir değişiklik yapmak istediğinizde yeniden derlenmeye ihtiyaç duyacaktır. Bunu yapmak zorunda kalırsanız, javascript'inizi HTML'niz içine yerleştirmeyecektim, bu tamamen kötü bir uygulamadır, işaretlemeniz belgenizi ne yaptığını değil, javascript'inizin işini anlatmalıdır.

Her öğe için belirli bir kimliğiniz (veya ortak işlevselliği varsa sınıfı) olan bir yaklaşım kullanın ve ardından aşağıdaki gibi bir olay işleyicisini eklemek için İlerleyen Donanım'ı kullanın:

[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");

[Javascript]  
document.getElementById('uxAncMyLink').onclick = function(e){

// do some stuff here

    return false;
    }

Bu şekilde kodunuz, JS devre dışı bırakılmış kullanıcılar için kırılmayacak ve açık bir endişe ayrıcalığına sahip olacaktır.

Umarım bu kullanım içindir.


4
2017-08-12 12:52



Neden#? Neden sadece <a href="/link/for/javascriptDisabled/Browsers.aspx" id="uxAncMyLink">My Link</a>? - Mahmoodvcs


Javascript köprüleri için href yerine onclick yöntemini kullanmayı tercih ediyorum. Ve her zaman sahip olduğunuz değeri belirlemek için uyarıları kullanın.

<a href='#' onclick='jsFunction();alert('it works!');'>Link</a>

Ayrıca giriş etiketlerinde de kullanılabilir.

<input type='button' value='Submit' onclick='jsFunction();alert('it works!');'>


4
2017-08-12 13:56





Genelde onclick olayını, bu eleman için varolan olay işleyicilerinin yerini alacak şekilde ayarlamak üzerine element.attachEvent (IE) veya element.addEventListener (diğer tarayıcılar) öğelerini kullanmanızı öneririm.

attachEvent / addEventListening, birden çok olay işleyicisinin oluşturulmasına izin verir.


2
2017-08-12 13:14





Kullan onclick HTML özelliği.

onclick olay işleyici yakalar bir   kullanıcının faresinden etkinlik ekle   elemanın üzerindeki düğme    onclick özniteliği uygulanır. Bu   eylem genellikle bir çağrıya neden olur   JavaScript gibi komut dosyası yöntemi   işlevi [...]


1
2017-08-12 12:38





Eğer sayfanın yüklenmesini beklemezseniz, öğeyi kimliğine göre seçemezsiniz. Bu çözüm, kodu çalıştırmak için sorun yaşayan herkes için çalışmalıdır

<script type="text/javascript">
window.onload = function() {
    document.getElementById("delete").onclick = function() {myFunction()};

    function myFunction() {
        //your code goes here
        alert('Alert message here');
    }
};
</script>

<a href='#' id='delete'>Delete Document</a>

0
2017-10-27 15:48