2010-11-19 34 views
1

Sayfa yüklendikten sonra ve kullanıcının kimliğine sahip belirli bir div tıkladığında herhangi bir zamanda çağrılan bir işlevi değiştirme konusunda yardıma ihtiyacım var. ...Javascript fonksiyon çağrısı hem onload hem de onclick sayfasında mı?

window.onload=function() { 
//Do your stuff, JS! 
} 

Evet, ancak herhangi bir JS biliyorum

DÜZENLEME: Ben kendim yapmadığını (benim JS işlevini içerecektir, belli ki başka güzel ve akıllı bir kişi Şimdiye kadar bu var did: P)

function() { 
    var maxHeight = 0; 
    //get the column containers 
    var colsA = document.getElementById("Content").childNodes; 

    //get the height of the tallest column 
    for(var i=0; i < colsA.length; i=i+1) { 
     if(colsA[i].clientHeight > maxHeight) maxHeight = colsA[i].clientHeight; 
    } 

//set all the column containers heights to maxHeight 
    for(var i=0; i < colsA.length; i=i+1) { 
     if(colsA[i].nodeType == 1) colsA[i].style.height = maxHeight+'px'; 
    } 
} 

Ne var: Ben x sütun sütun sayısı barındıran bir div kapsayıcım var. Bu sütunlar içerik nedeniyle yüksekliğe göre değişir. Bu işlev tüm divs yüksekliklerini aynı yapar.

Sayfam yüklendiğinde, bu kod kusursuz şekilde çalışır. Ancak daha sonra değil. Ek bilgi barındıran bazı katlanabilir div'larım var, bir kullanıcı tıkladığında yüksekliği daha da yukarı itecektir. Bu yüzden bu kimlik için bir onclick düşündüm ... ne yazık ki id php tarafından dinamik olarak üretilir.

cevap

7

ayrı olarak bir işlev tanımlamak ve sonra birden olay işleyicileri onu bağlayabilir:

function myHandler(){...} 
window.onload = myHandler; 
myElement.onclick= myHandler; 
... 
1

Bu düzeltmek gerekir:

function f() { 
    // do your stuff 
} 

window.onload = f; 
document.getElementById("myButton").onclick = f; 
+0

Öğe kimliği dinamik olarak oluşturulursa ne olur? Buna bir şans verdim ... ama çalışmadı. Gönderiyi gerçek işlevle düzenleyebilirim. – stockoverflow

+0

böylece myButton = CollapsiblePanel > bunun gibi bir şey. – stockoverflow

+0

@stockoverflow: Eh, bir şekilde öğeye bir referans almalısın ... –

0

Başka yolu: In

window.onload=function() { 
//Do your stuff, JS! 
} 

yourElement.onclick = window.onload; 

Sonunda bunu nasıl yaptığınız önemli değil. İşlevler birinci sınıf nesnelerdir, bu yüzden işlevin bir referansına sahip olmanız yeterlidir.


JavaScript hakkında daha fazla bilgi edinmek için MDC JavaScript Guide de bakabilirsiniz.

İlgili konular