[Risolto][JS] Classe definita in (function); renderla glob
-
TommyB1992
- Scoppiettante Seguace

- Messaggi: 862
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
[Risolto][JS] Classe definita in (function); renderla glob
Ciao ragazzi,
ho scritto una classe di cui riporto il pezzo di codice incriminato:
http://pastebin.com/HLgEcvSB
Se potete notare la riga: div.setAttribute("onClick", "Keyboard.insert_char(this.innerHTML)"); non funzionerà mai perchè ovviamente la classe Keyboard la definisco dentro a una funzione, ed anche se definisco var Keyboard = {}; al di fuori di essa non funziona.
ho scritto una classe di cui riporto il pezzo di codice incriminato:
http://pastebin.com/HLgEcvSB
Se potete notare la riga: div.setAttribute("onClick", "Keyboard.insert_char(this.innerHTML)"); non funzionerà mai perchè ovviamente la classe Keyboard la definisco dentro a una funzione, ed anche se definisco var Keyboard = {}; al di fuori di essa non funziona.
Ultima modifica di TommyB1992 il venerdì 19 giugno 2015, 14:01, modificato 1 volta in totale.
Re: [JS] Classe definita in (function() {/**/}();) renderla
Stai usando lo strict-mode è normale che sia così.
Scrivere il codice js come stringa in un attributo è decisamente sconsigliabile. Basta usare addEventListener:In questo modo eviti la necessità che Keyboard sia visto globalmente.
Consiglio di guardare lo standard AMD e RequireJS su come gestire le dipendenze in javascript.
Per il futuro sono utili anche i moduli di ECMAScript 6 (ovvero la nuova versione di JS): https://developer.mozilla.org/en-US/doc ... nts/import
Scrivere il codice js come stringa in un attributo è decisamente sconsigliabile. Basta usare addEventListener:
Codice: Seleziona tutto
div.addEventListener('click', function(){ Keyboard.insert_char(this.innerHTML); })Consiglio di guardare lo standard AMD e RequireJS su come gestire le dipendenze in javascript.
Per il futuro sono utili anche i moduli di ECMAScript 6 (ovvero la nuova versione di JS): https://developer.mozilla.org/en-US/doc ... nts/import
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
TommyB1992
- Scoppiettante Seguace

- Messaggi: 862
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: [JS] Classe definita in (function() {/**/}();) renderla
Ciao Zoff, inserire l'elemento nell'addEventListener è quello che ho fatto a prescindere, ma avendo provato questa versione precedentemente ero curioso di capire il perchè non funzionasse.Zoff [url=http://forum.ubuntu-it.org/viewtopic.php?p=4770945#p4770945][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Stai usando lo strict-mode è normale che sia così.
Scrivere il codice js come stringa in un attributo è decisamente sconsigliabile. Basta usare addEventListener:In questo modo eviti la necessità che Keyboard sia visto globalmente.Codice: Seleziona tutto
div.addEventListener('click', function(){ Keyboard.insert_char(this.innerHTML); })
Consiglio di guardare lo standard AMD e RequireJS su come gestire le dipendenze in javascript.
Per il futuro sono utili anche i moduli di ECMAScript 6 (ovvero la nuova versione di JS): https://developer.mozilla.org/en-US/doc ... nts/import
Comunque grazie per le guide, gli darò una letta.
-
TommyB1992
- Scoppiettante Seguace

- Messaggi: 862
- Iscrizione: domenica 7 luglio 2013, 15:55
- Desktop: GNU/Linux
- Distribuzione: Ubuntu 22.04.2 LTS
- Sesso: Maschile
Re: [RISOLTO][JS] Classe definita in (function); renderla gl
Vorrei comunque incollare anche la soluzione di un altro utente (non si sa mai che sia utile a qualcuno):
Vindav ha scritto:una soluzione è quella, l'altra è quella di rendere globale Keyboard, per farlo basta togliere il var.
Re: [RISOLTO][JS] Classe definita in (function); renderla gl
Considera però che l'utilizzo delle globals è una Bad practice.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti
