12

Google apps komut dosyasını kullanma Parametreleri geçen bir js işlevi çalıştırmakta zorlanıyorum. Parametreleri eklediğimde, her zaman düğme tıklandığında yerine sayfa yüklendiğinde kodu çalıştıracaktır. o ...onclick işlevi otomatik olarak çalışır

document.getElementById('button1').onclick = doSomething; 

düğmeye basıldığında çalışır Ama çağrı (ve fonksiyonu) aşağıdaki gibi bir parametre eklerken, sadece çalışır - HtmlService örnekten Doğrudan

, bu sorun yok bir kere sayfa yüklenirken (ve düğmeye basıldığında) ...

document.getElementById('button1').onclick = doSomething('with_this_parameter'); 

Bu davranışa içine Herhangi bir fikir büyük takdir zaman ... üzgünüm cevap açıktır eğer! Eğer

document.getElementById('button1').onclick = doSomething('with_this_parameter'); 

derken

+3

'()' Bir işlev referansının ardında her zaman işlevi çağırır. –

cevap

24

Bu çağrı doSomething sonra ('with_this_parameter') ve document.getElementById('button1').onclick döndü değeri atamak anlamına gelir. Bu nedenle, kod bu hatta ulaştığında çağrılır. Değerin o mülke atanıp atanmayacağı başka bir sorudur, ancak bu yüzden aranır.

bu

document.getElementById('button1').onclick = function(){ 
    doSomething('with_this_parameter'); 
} 

Referans gibi kullanın: Bu çözüm Mark Linus tarafından verildi.

+0

Bilgi için teşekkürler :) –

+1

+1 açıklaması nedeniyle –

+1

Hoşgeldiniz. Cevap Mark Linus tarafından önerilen yol –

9

böyle yapın:

document.getElementById('button1').onclick = function(){ 
    doSomething('with_this_parameter'); 
} 
+0

Teşekkürler - bu çalışır! Basit olacağını biliyorum: D –

1

Ben genellikle şöyle clickHandlers yapın:

// create button here or get button... 
var button1 = document.getElementById('button1').setName('button1'); 
var clickHandler = app.createServerClickHandler('doSomething'); 
button.addClickHandler(clickHandler); 

function doSomething(e){ 
    var button1 = e.parameter.button1; 
    <do something with var button> 
} 

Ben eklemekte ne parametre emin değilim, ancak geçmek için bir geri arama elemanını eklemem gerekiyor Düğme tarafından bir .setId/getId veya .setTag/getTag aracılığıyla geçirilmezse. Bir metin kutusundan ise:

Bu yardımcı olur!