2016-04-04 44 views
0

İki js dosyam var. İlki (alert.js)Javascript işlevi hemen çağrılıyor

function test() { 
    var name= document.getElementById("name").value; 
    alert(name); 
}; 

ve ikinci bir (main.js) html

document.getElementById("question_button").addEventListener("click", test()); 

i sayfa yüklendiğinde o

<body> 
    ... 
    <script type="text/javascript" src="js/alert.js"></script> 
    <script type="text/javascript" src="js/main.js"></script> 
</body> 

Fonksiyon testi çağrılır benziyor . İhtiyacım olan bu değil. Muhtemelen çok basit ama anlayamıyorum. "Test" fonksiyonu nasıl yapılır, sadece tuşa basıldığında devreye girer?

+3

Değişim 'testi()' sına –

+0

'testi' için 'çağırır fonksiyon, 'addEventListener' –

cevap

2

test() numaralı telefonu arayarak (undefined) değerini addEventListener numaralı telefona iletiyorsunuz.

document.getElementById("question_button").addEventListener("click", test); 

veya anonim bir işlev geçmesi: Sadece aramak yerine bir argüman olarak doğrudan test geçmesi) (

document.getElementById("question_button").addEventListener("click", function () { test(x) }); 
+0

'unuzda sadece 'test' istersiniz. Ama eğer bir argüman ile "test" fonksiyonunu çağırmam gerekirse? "Test" deyin şunun gibi görünüyor: 'fonksiyon testi (val) { alarmı (val); }; ' Ve kodun ikinci kısmı şu şekildedir: ' var x = "alert x!"; document.getElementById ("question_button") addEventListener ("klik", test (x)); Bu durumda nasıl düzeltilir? – Bajzel

+1

İsimsiz bir işlev kullanabilirsiniz. Aşağıdakilere bakın [https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Event_Listener_with_anonymous_function](https://developer.mozilla.org/en-US/docs/Web/ API/EventTarget/addEventListener # Event_Listener_with_anonymous_function). –

+1

@Bajzel Bir yol, test (x) 'olarak adlandırılan anonim bir işlevi iletmektir. Cevabımı düzenledim. – Paulpro

İlgili konular