HTML'de href yerine JavaScript işlevi nasıl çağrılır


86

HTML'de biraz modelim var

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

İsteği gönderdiğimde sunucudan yanıtı aldım.

Bu mockup ile kodumu sunucuya gönderen AJAX isteğinin yanıtı olarak aldım.

Her şey yolunda ama bağlantıya tıkladığımda tarayıcı işlevi bağlantı olarak açmak istiyor; yani tıklamadan sonra adres çubuğunu şu şekilde görüyorum:

javascript:ShowOld(2367,146986,2)

Bu işe yarayan firebug'da yapmak istersem url olan tarayıcı şey anlamına gelir. Şimdi bunu yapmak istiyorum, o zaman herhangi biri bağlantıyı tıkladığında, tarayıcı tarayıcıda açmaya çalışmak yerine DOM'da zaten yüklü olan işlevi çağırmaya çalışır.


Benzer soru Stackoverflow'un kendisinde yanıtlanır. stackoverflow.com/questions/1070760/…
Scaria Sebastian

Yanıtlar:


196

Bu sözdizimi iyi çalışmalıdır, ancak bu alternatifi deneyebilirsiniz.

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

veya

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

STRING DEĞERLERİ İÇİN GÜNCEL CEVAP

Dizeleri aktarıyorsanız, işlevinizin parametreleri için tek tırnak kullanın

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

Bağımsız değişkenlerde çift tırnaktan kaçan bir dize nasıl iletilir? H = Örnek yalnızca tam sayılara sahiptir.
jeffry copps

1
@jeffrycopps işlevinizin içindeki tek tırnakları deneyin
ineedme

@ineedme Yanıt Bu bilgilerle güncellendi. Teşekkürler.
Dutchie432

9

Yalnızca "tıklama olay işleyiciniz" varsa, <button>bunun yerine a kullanın. Bir bağlantının belirli bir anlamsal anlamı vardır.

Örneğin:

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

Bir düğmeyi düğme yerine bağlantı gibi göstermenin herhangi bir yolu var mı?
Ben Page

@Ben Page: Evet, CSS ile. En azından iyi bir yaklaşım elde ediyorsun. Cevabımı ve yorumları burada görün: stackoverflow.com/questions/4842953/or-javascriptvoid0/…
Felix Kling

7

JavaScript'inizi göze batmayacak hale getirmeye çalışın:

  • href niteliğinde gerçek bir bağlantı kullanmalısınız
  • ve ajax'ı işlemek için click olayına bir dinleyici ekleyin

hrefisteğe bağlıdır, atlayın.
Colin 't Hart

Bir etiket bir bağlantıdır; bir bağlantısı olması gerekmez.
Colin 't Hart

5

Bunun gibi bir bağlantı gibi görünmesini sağlamak için bir yayılma alanında küçük bir CSS kullanıyorum:

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");
}

Yukarıdaki 'url' işlevi parametresi bana gerçek url yerine "url" dizesi veriyor
visrahane

ShowWindow işlevine gerçek URL'yi koymanız gerekir. Örneğin: javascript: showWindow (' stackoverflow.com' );
tolsen64

Bunu dom kullanarak oluştururken sabit
kodlayamıyorum

3

Ayrıca javascript'i HTML'den ayırmalısınız.
HTML:

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

javascript:

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

ShowOld işlevindeki son satırın şu olduğundan emin olun:

return false;

çünkü bu, bağlantının tarayıcıda açılmasını durduracaktır.


1
hrefisteğe bağlıdır, atlayın.
Colin 't Hart

3

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


9
Bu, sayfanın en üstüne atlayacağından en iyi çözüm değildir.
Alex Marshall

1
#Kullanım yerine href içinhref="javascript:void(0)
Narayan

1
hrefisteğe bağlıdır, atlayın.
Colin 't Hart

1

href için isteğe bağlıdır aöğeler .

Kullanmak tamamen yeterli

<a onclick="ShowOld(2367,146986,2)">link text</a>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.