|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 16
|
[javascript] Oggetti e eventi
Salve a tutti,
sto realizzando un sito con funzionalità javascript e ho il seguente problema: sto definendo un oggetto che sarebbe l'oggetto che definisce una Form che sto creando dinamicamente, tra i vari campi c'è il bottone che devo creare e questo sarebbe il codice: Codice:
function Oggetto(mark) {
blablabla;
....;
this.invia=document.createElement("input");
this.invia.setAttribute("type","button");
this.invia.setAttribute("value","Aggiungi");
this.invia.onclick=function() {
alert(this);
addObj(mark,this);
};
}
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Avevamo avuto lo stesso problema, risolto mediante la call a Function.createDelegate Ma non ti so dire ora se e' nativa in javascript oppure se e' generica e basta aggiungere una libreria oppure se e' magari limitata solo ad ASP.net Nel tuo caso il codice sarebbe qualcosa di simile a Codice:
this.invia.onclick=Function.createDelegate(mark, ProcessClick);
...
//e nel codice dell'oggetto di tipo mark, chiamato qui markType
markType.ProcessClick = function(){
// Qui siamo sicuri che this e' proprio l'istanza (come mark), grazie alla createDelegate
alert(this);
this.addObj();
}
Il primo e' il contesto, che sara' il "this" della funzione quando verra' eseguito Il secondo e' il metodo che dovra' essere eseguito, il cui this sara' appunto il primo parametro. Se alla this.addObj serve anche come parametro il pulsante che avevi generato prima, allora e' anche possibile passare parametri al delegate, ma devo chiedere all'esperto...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 01-04-2009 alle 12:37. |
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 16
|
Innanzitutto grazie..
e' un po elaborata come soluzione.. forse mi conviene optare utilizzando il DOM ossia trattandosi il button invia di un bottone di una form potrei usare this.parentNode (dove this sarebbe quindi il bottone stesso) ottenendo così l'oggetto form e accedendo ai suoi campi tramite le regole DOM. Forse è la cosa che più mi conviene. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Codice:
function Oggetto(mark) {
blablabla;
....;
this.invia=document.createElement("input");
this.invia.setAttribute("type","button");
this.invia.setAttribute("value","Aggiungi");
this.invia.Context = this;
this.invia.onclick=function() {
alert(this.Context);
addObj(mark,this.Context);
};
}
Cosi' almeno per una volta usi Javascript con la sua caratteristica di linguaggio dinamico poco StrongType (Context ovviamente non e' una proprieta' di un pulsante, che viene creata al volo giusto a seguito dell'assegnazione)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 01-04-2009 alle 16:39. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:32.




















