2008-11-20 10 views
11

Ok, ich habe ein Javascript, das wie diese Zeilen in einer Tabelle erstellt:Wie übergibt man einen Parameter an eine dynamisch eingestellte Javascript-Funktion?

function AddRow(text,rowID) 
    { 
    var tbl = document.getElementById('tblNotePanel'); 
    var row = tbl.insertRow(tbl.rows.length); 

    var cell = row.insertCell(); 
    var textNode = document.createTextNode(text); 
    cell.id = rowID; 
    cell.style.backgroundColor = "gold"; 

    cell.onclick = clickTest; 

    cell.appendChild(textNode); 
    } 

In der obigen Funktion I der Zelle „Onclick“ Funktion gesetzt andere Javascript-Funktion namens „clickTest“ zu nennen. Meine Frage ist, wenn ich das Ereignis "onclick" dem Aufruf von "clickTest" zuweisen möchte, wie setze ich Parameterinformationen, die gesendet werden sollen, wenn die "clickTest" -Methode beim "onclick" -Ereignis der Zelle aufgerufen wird? Oder wie greife ich auf die ID der Zelle in der Funktion "clickTest" zu?

Danke, Jeff

Antwort

21

Versuchen Sie folgendes:

cell.onclick = function() { clickTest(rowID); }; 

Die Idee ist, dass Sie die Onclick-Handler auf die anonyme Funktion sind verbindlich. Die anonyme Funktion ruft clickTest mit rowID als Parameter auf.

4

In der clickTest Funktion sollten Sie Zugriff auf eine der this Variable haben. Versuchen Sie, diese innerhalb von clickTest Funktion:

alert(this.id); 

Dies ist auf das DOM-Element beziehen, die das Ereignis ausgelöst.

Grundsätzlich gibt es keine Möglichkeit, Parameter an eine Event-Handler-Funktion zu übergeben. Der Grund dafür ist, dass der Browser die Funktion basierend auf einem Ereignis ausführt und Sie die Funktion nicht tatsächlich aufrufen.

Sie können Closures verwenden, mit denen Sie beim Zuweisen der Event-Handler-Funktion auf lokale Variablen (zum Abschluss) zugreifen können. Das würde wie folgt aussehen:

cell.onclick = function() { alert(this.id); alert(cell.id); }; 

Were cell.id ist die lokal variable scoped, die noch in ihrem Umfang berücksichtigt wird, wenn der Event-Handler ausgeführt wird.

Verwandte Themen