Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    20

    nome funzione composta da variabili.

    Salve a tutti o/
    Ho la leggera impressione di aver provato a realizzare una cosa che non si può fare...però vorrei esserne certo per arrendermi e prendere un'altra via.

    Il mio problema è questo:
    ho una funzione javascript ( funzioneA() ) che al suo interno richiama un'altra funzione che però ha un nome che cambia grazie all'uso di php, quindi può essere funzioneB1 o B2 o B3 e così via.
    Ora, per dire all'interno della funzioneA il nome attuale della funzioneB1/2/3.. ho pensato di utilizzare il value di un input hidden che cambia ogni volta come la funzioneB stessa; poi richiamare questo value come variabile "nomefunzione" (quindi var nomefunzione = document.getelementbyid("inputhidden").value; ) nella funzioneA().

    A questo punto ho pensato felicemente che se scrivessi tipo
    funzioneA() {
    var nomefunzione = document.getelementbyid("inputhidden").value;
    "funzioneB"+nomefunzione;
    }


    "funzioneB"+nomefunzione; l'avrebbe preso come nome della funzioneB che cambia e l'avrebbe fatta partire, ovviamente non funge.

    C'è una sintassi particolare per compiere questo tipo di operazione o è impossibile?

    D: help me please.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Invece di valorizzare un input hidden costruisci direttamente la funzione col php tipo:
    funzioneA() {
    ........
    funzioneB<?php qui-metti-la-varibile-php-del-hidden?>(){
    .......}
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    20
    Allora, ho pensato anche io di fare così all'inzio, il problema è che il codice php crea un ciclo while. E quindi crea decine di script javascript con le funzioniB1/2/3.. quindi per evitare che il browser poi vada a caricare troppi dati, avevo pensato di fare quello. Anche perché poi dovrei inserire diversi <div> e altri elementi nel ciclo while, quindi sempre più contenuti da caricare ogni volta :\

    Per questo ho pensato a quel tipo di soluzione. Ma se è impossibile farlo mi sa che mi tocca l'opzione B x.x

  4. #4
    In casi del genere ho usato eval.

    codice:
    var j="funzioneB"+nomefunzione+"(params);";
    eval(j);
    Dovrebbe andar bene anche nel tuo caso.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da bohif
    Allora, ho pensato anche io di fare così all'inzio, il problema è che il codice php crea un ciclo while. E quindi crea decine di script javascript con le funzioniB1/2/3.. quindi per evitare che il browser poi vada a caricare troppi dati, avevo pensato di fare quello. Anche perché poi dovrei inserire diversi <div> e altri elementi nel ciclo while, quindi sempre più contenuti da caricare ogni volta :\

    Per questo ho pensato a quel tipo di soluzione. Ma se è impossibile farlo mi sa che mi tocca l'opzione B x.x
    Non cambia crei un while identico nella head per stampare le funzioni che ti servono
    Originariamente inviato da softhare
    In casi del genere ho usato eval.

    codice:
    var j="funzioneB"+nomefunzione+"(params);";
    eval(j);
    Dovrebbe andar bene anche nel tuo caso.
    Sicuro che sia adatto alle funzioni fai un esempio di function non di variabile oppure un pagina demo che vorrei testarlo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    E' un esempio minimale e molto stupido, tuttavia funziona.

    codice:
    <HTML><HEAD></HEAD><BODY>
    <SCRIPT LANGUAGE="JavaScript">
    
    function alfa_1(q){document.write("uno="+q+'
    ');}
    
    function alfa_2(q){document.write("due="+q+'
    ');}
    
    function alfa_3(q){document.write("tre="+q+'
    ');}
    
    for(t=1;t<4;t++){
    j='alfa_'+t+'(17)';
    eval(j);
    }
    
    </SCRIPT></BODY></HTML>
    Alcuni compattatori ed offuscatori di codice js mettono tutta una applicazione (funzioni, oggetti e relativi metodi, scope principale) in una singola stringa che poi EVALutano.

    Insomma eval è davvero potente...
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Boh... secondo me non è la tessa cosa un conto e richiamare una funzione, un altra è ricostruire una funzione "variabile" al volo cioè lui vuole function+"variabile+"()" quello che hai fatto non è questo
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Mi pareva che questo fosse l'assunto:

    A questo punto ho pensato felicemente che se scrivessi tipo
    funzioneA() {
    var nomefunzione = document.getelementbyid("inputhidden").value;
    "funzioneB"+nomefunzione;
    }

    "funzioneB"+nomefunzione; l'avrebbe preso come nome della funzioneB che cambia e l'avrebbe fatta partire,
    E quindi un codice del tipo:

    codice:
    <HTML><HEAD><TITLE></TITLE></HEAD><BODY>
    
    <INPUT TYPE="hidden" ID="inputhidden" NAME="inputhidden" VALUE="uno">
    
    <SCRIPT LANGUAGE="JavaScript">
    function funzioneBuno(){document.write("ecco uno
    ");}
    function funzioneBdue(){document.write("ecco due
    ");}
    function funzioneBtre(){document.write("ecco tre
    ");}
    
    function funzioneA() {
    var nomefunzione = document.getElementById("inputhidden").value; 
    var j="funzioneB"+nomefunzione+"()";
    eval(j);
    }
    
    funzioneA();
    </SCRIPT></BODY></HTML>
    dovrebbe risolvere il problema.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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 © 2025 vBulletin Solutions, Inc. All rights reserved.