SORU
22 Aralık 2009, Salı


Bir html düğme bir javascript işlevini çağırmak için kullanma.

Bir javascript işlevini çağırmak için bir html düğme kullanmaya çalışıyorum.

İşte kod:

<input type="button" value="Capacity Chart" onclick="CapacityChart();">

Doğru ama işe yaramıyor. Daha iyi bir yolu bunu yapmak için vardır?

Burada sol alt bölümünde kapasite sekmesinde:http://projectpath.ideapeoplesite.com/bendel/toolscalculators.html bağlantısını tıklayın. Düğmesine değerler değişmez ve eğer değerler girerseniz bir grafik oluşturmak gerekir Eğer bir uyarı oluştursun.

CEVAP
22 Aralık 2009, Salı


HTML/DOM ile olayları işlemek için bir kaç yolu vardır. Doğru ya da yanlış gerçek bir yolu yok ama farklı yollar farklı durumlarda yararlıdır.

1: HTML biçiminde tanımlama Var:

<input id="clickMe" type="button" value="clickme" onclick="doFunction();" />

2: Javascript olay için: DOM özelliği ekleme Var

//- Using a function pointer:
document.getElementById("clickMe").onclick = doFunction;

//- Using and anonymous function:
document.getElementById("clickMe").onclick = function () { alert('hello!'); };

3: Ve Javascript kullanarak: olay işleyicisi için bir işlev ekleme var

var el = document.getElementById("clickMe");
if (el.addEventListener)
    el.addEventListener("click", doFunction, false);
else if (el.attachEvent)
    el.attachEvent('onclick', doFunction);

Her ikisi de ikinci ve üçüncü yöntem satır içi/anonim işlevler için izin ve her iki unsuru belgeden ayrıştırıldı sonra bildirilmelidir. İlk yöntem özelliği öznitelik XHTML özellikleri değil, çünkü geçerli XHTML değil.

1. ve 2. diğer yöntemleri geçersiz kılar bir birbirini dışlayan, anlamını kullanarak (1). 3. yöntem eğer 1 veya 2. yöntem çok kullanılan hatta aynı olay işleyicisi sizin gibi birçok işlevleri eklemek için izin verecektir.

Büyük ihtimalle, sorun bir yerde CapacityChart() fonksiyon yatıyor. Linki ziyaret etmek için ve komut çalıştırdıktan sonra CapacityChart() fonksiyonu çalışır ve iki pop-up açılır (komut başına kadar kapalı. Aşağıdaki satırı olduğu:

CapacityWindow.document.write(s);

Şunları deneyin yerine

CapacityWindow.document.open("text/html");
CapacityWindow.document.write(s);
CapacityWindow.document.close();

EDİT
Kodu görünce özellikle IE için yazdığını sanıyordum. Diğerleri de belirttiğim gibi document.getElementById 13 *başvurular değiştirmeniz gerekir. Ancak, sen-ecek hala görevde tamir senaryoyu sonra bu yüzden istiyorum tavsiye almaya çalışıyor en azından YANİ ilk olarak herhangi bir hata yaparsın değiştirme kodu için çalışma çapraz tarayıcı olabilir neden daha fazla kafa karışıklığı. YANİ çalışan bir kod güncelleme yaparken eğer diğer tarayıcılarda çalışıp çalışmadığını söylemek için daha kolay olacaktır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • Tomas N

    Tomas N

    14 Kasım 2010
  • William Hyde

    William Hyde

    23 HAZİRAN 2008