Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Chiamata a funzione: problema con THIS.

    Sera a tutti.... con cosa dovrei sostituire le "X" per fare la chiamata a send, visto che this fa riferimento ad inputFile????
    Grazie.

    codice:
    var AddFileToList = function () { 
        
        this.send = function (inputFile) { 
            .............. 
            ................... 
        } 
    
        this.addInputFile = function (inputFile) { 
            
            inputFile.addEventListener("change", function (e) { 
                
                .............. 
                ...................
                XXX.send(this); 
            }, false); 
        } 
    }
    La ricompensa per una cosa ben fatta è averla fatta. (Emerson)

  2. #2
    codice:
    var AddFileToList = function () { 
        
        this.send = function (inputFile) { 
            .............. 
            ................... 
        } 
    
        this.addInputFile = function (inputFile) { 
            var obj = this;
            inputFile.addEventListener("change", function (e) { 
                
                .............. 
                ...................
                obj.send(this); 
            }, false); 
        } 
    }

  3. #3
    Ciao piesse78...

    Grazie della risposta, ma purtroppo continua a non funzionare.
    La ricompensa per una cosa ben fatta è averla fatta. (Emerson)

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    15
    devi dichiarare il metodo send come funzione privata con var
    codice:
    var AddFileToList = function () { 
        
        var send = function (inputFile) { 
            .............. 
            ................... 
        }
    dovrebbe funzionare, per inciso è lo stesso problema che ho sollevato io nella discussione "Core.start(), init(), var, passaggio di parametri" sul perché non saprei nessuno ha saputo dare una risposta.
    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    sul perché non saprei nessuno ha saputo dare una risposta


    e cmq funziona come suggerito da piesse

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    15
    Si funziona, ovvio passo un riferimento all'oggetto corretto, ma mi rimane meno chiaro perché funzioni la sol indicata da me. Ripeto ho cominciato con javascript da poco magari è ovvio ma io non lo capisco.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    come fai tu stai definendo una variabile o metodo locale/privato. Ora se ho la visibilità di tale metodo o variabile e volessi utilizzarla perchè non potrei farlo? non capisco quali siano i tuoi dubbi.

    Il problema di utilizzare questa "soluzione" è che il metodo non viene "collegato" all'oggetto AddFileToList, quindi non potrai richiamarlo cosi:

    obj = new AddFileToList();
    obj.send(document.getElementById(input));

    ma appunto è richiamabile solo all'interno del metodo stesso.
    Ora se la mia risposta non ti soddisfa specifica meglio cosa vuoi sapere o cosa non riesci a comprendere.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    15
    Si il mio problema nasceva proprio nel capire l'ambito di validità per una determinata dichiarazione ad esempio
    codice:
    this.metodo1=function .....
    var metodo2=function .....
    
    this.metodo3=function()
    {
       this.metodo1();
       metodo2();
    }
    la visibilità in metodo3 c'è per tutti e due i metodi ma qualora metodo3 venga usato come listener l'ambito sarà quello dell'oggetto associato al listener e quindi metodo1 fallirà e questo è giusto e logico ma metodo2 funzionerà perché il suo ambito resta quello dell'oggetto originario.
    Questa seconda parte mi risultava un poco ostica da digerire...tutto qui.
    "lunga vita e prosperità"

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    ma metodo2 funzionerà perché il suo ambito resta quello dell'oggetto originario
    Si, in modo specifico funzionerà perche il metodo non ha un owner, non ha un oggetto/funzione proprietaria, non dipende da altri, e' un metodo a se stante, l'unica caratteristica del metodo2 è quella di essere locale/privata. Mentre metodo1 è una funzione di un oggetto/classe. Infatti la sintassi oggetto.funzione imita la programmazione ad oggetti.

    Cmq trovi sicuramente svariati articoli in rete sulla questione, e lo spiegeranno sicuramente meglio di come lo spiego io.


  10. #10
    Ciao ragazzi e grazie....


    Il metodo send() a me serve richiamarlo solo all'interno della funzione "addInputFile()" , e non poi dall'istanza creata.

    Una volta istanziato l'oggetto, quindi:

    codice:
    var input_da_passare_all_istanza = document.getElementById('id_input');
    var pippo = new AddFileToList();
    pippo.addInputFile(input_da_passare_all_istanza);
    però succede che il metodo send() non viene eseguito.
    La ricompensa per una cosa ben fatta è averla fatta. (Emerson)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.