Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94

    Utilizzare una variabile ovunque

    Buongiorno ragazzi.

    Vorrei recuperare il valore di una INPUT e utilizzarlo altrove.

    ESEMPIO HTML

    codice:
    <form id="mioForm">
        <input type="text" id="test">
        <input type="submit">
    </form>
    <p id="tip"</p>
    ESEMPIO JAVASCRIPT

    codice:
    $(function() {
        $("#mioForm").on("submit", function(e) {
            e.preventDefault();
            x = $("#test").val(); // in teoria se non si scrive VAR, anche se si � all'interno di una funzione, lo scopo diventa GLOBALE
        });
    });
    Ho fatto mille tentativi ma nulla ha funzionato.
    1) Le variabili al di fuori delle funzioni hanno GLOBAL SCOPE
    2) Le variabili dentro le funzioni hanno LOCAL SCOPE
    3) Le variabili dentro eventi che SCOPE hanno?

    Il primo tentativo che ho fatto � stato appunto dichiarare una variabile al di fuori:
    var x;

    e dentro l'evento aggiornarla:
    x = $(selettore).val();

    Io poi vorrei utilizzare il risultato cosi:
    var sfidante = new Giocatore(x);

    Eppure se nell'esempio sopra tolgo l'evento e metto una funzione funziona:


    codice:
    $(function() {
        function prova() {
            e.preventDefault();
            x = $("#test").val();
        }
        pr();
        S("#tip").html(x)
    });
    Cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    document.getElementById('test').value
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    Ciao badaze. Ma non va bene farlo con jquery come ho fatto sopra? variabile = $("#test).val();
    Il fatto � che poi non mi lascia utilizzare la variabile.

    attualmente faccio cosi:

    codice:
    S(function() {
    
        var x;
    
        $("#mioForm").on("submit", function(e) {        e.preventDefault();
            
            x = $("#test").val(); // aggiorna la variabile x fuori?
            
            var details = $("#mioForm").serialize();
            $.post("register.php", details, function(data) {
            $("#mioForm").html(data);
            });
        });
    
        // qui, fuori dall'evento submit voglio richiamare il valore di x
        var sfidante = new Giocatore(x);
    
    });
    Non mi da errore in console ma non succede nulla.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Vuoi poter usare il dato ovunque. Ti dò il modo. Non avevo capito che tu volessi da una certa variabile.
    Basta digitare var x; subito dopo <script> nella parte head. Cosi x ha una portata globale.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Non fa nulla perché usi un tasto submit, usa un tasto button e vedrai che funziona
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    badaze, var x se vedi l'esempio che ho postato sopra è subito dopo $(function() { quindi dovrebbe essere già globale.

    Andrea ho provato a sostituire l'input submit con un button ma non cambia nulla.

    Ma è davvero cosi difficile? Sono un paio di giorni che sono bloccato su sta cosa.. menomale che non è per lavoro .

    Ripeto che come l'ho scritto nell'ultimo esempio non mi appaiono errori in console ma non succede nulla.. Non appare il nome dello sfidante.. Se invece provo a spostare x = $("#test).val() in altri punti (ho provato tutto quello che mi venisse in mente) ottengo errore in console che dice test is not found.

    Ma la logica dell'esempio postato sopra è corretta? inizializzo var x fuori da tutto (global scope) poi dentro l'evento submit aggiorno la variabile con il val() della input. Se dovessi usare il valore di x dentro il submit penso non ci sia problema. Problema che ho quando cerco di richiamare x in un altro punto.

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Metti un link alla pagina pubblica, fatti stampare la variabile x senza richiamare Giocatore(x) che potrebbe avere dei problemi e togli e.preventDefault();
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    Non ho una pagina pubblica, sono degli esercizi che faccio in locale man mano che leggo il libro. E' una semplice pagina dove ho inserito un:

    1) FORM (perch� volevo provare ajax + php per mandarmi una mail a me stesso con i dati inseriti nel form)
    2) UN GIOCHINO DI DADI che avevo fatto in javascript/jquery per esercitarmi.

    Inizialmente chiedevo di inserire un nome tramite un prompt e tutto funzionava. Immagazzinavo il valore in una variabile e lo chiamavo dove mi serviva:

    var taldeitali = prompt("Inserisci il tuo nome)
    var sfidante = new Giocatori(taldeitali)

    Il problema � iniziato quando volevo sfruttare l'INPUT #nome del form al posto del prompt.

    Ovviamente il valore della input la recupero quando invio il form da qui l'esigenza di:

    codice:
    $("#mioForm")on("submit", function() {
        e.preventDefault();
        var x = $("#nome").val() // qui recuperavo il valore
    });
    var x con il valore dell'input non posso metterla fuori l'evento altrimenti il campo non avrebbe nessun valore (perch� l'evento submit non sarebbe ancora stato dato). Giusto?

    Quindi avevo pensato, come avevo scritto in precedenza, di inizializzare var x fuori e dentro l'evento richiamare x (senza var) per aggiornare la variabile ma credo non si possa fare. Infatti si dice:

    La vita di una variabile inizia quando una funzione � chiamata e finisce quando una funzione � terminata e la function dentro l'evento (dopo submit) credo non faccia eccezione. E' corretto ci� che dico?

    Infatti ho fatto una semplice prova:

    codice:
    var x = 5;
    
    function changeN() {
      x = 15;
      document.getElementById("demo").innerHTML = "demo: "+ x; 
    }
    
    var el = document.getElementById("click");
    el.addEventListener("click", changeN); // quando parte l'evento scatena la funzione changeN e mi aggiorna la x e mi stampa 15.
    
    document.getElementById("demo2").innerHTML = "demo2: " + x; // qui invece mi stampa 5 ovvero il valore iniziale perch� non c'� la funzione che mi aggiorna TEMPORANEAMENTE il valore.
    Pensavo si potesse fare. Se non ricordo male in python se aggiorni una variabile lo fa e basta, non solo temporaneamente. Pensavo che funzionasse allo stesso modo.

    E' corretto ci� che ho detto o mi sono sbagliato?

    Forse la soluzione sarebbe portare tutto il resto dello script all'interno di quelle evento.. non penso di poter mettere solo var sfidante = new Giocatori(x) perch� sfidante la uso anche in altre funzioni..

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    Ciao, ho risolto facendo come detto nell'ultimo post, ovvero portando tutto il resto dello script (formato da altre funzioni), racchiuso tutto da un'altra funzione, all'interno dell'evento submit:

    codice:
    $("#mioForm")on("submit",function(){
        e.preventDefault();
        x = $("#nome").val()// qui recuperavo il valore
        playGame() // all'interno di questa funzione ho messo tutto il resto dello script
    });
    Ho letto che le funzioni annidate possono accedere alle variabili delle funzioni più esterne ed infatti funziona tutto.

    Ora però vorrei che mi aiutaste a capire il perchè del problema del post per non trascinarmi questa incomprensione nelle altre fasi dell'apprendimento.
    L'unico modo che si ha per aggiornare una variabile mi pare di aver capito sia questo:

    codice:
    $(function() {
    var x = 5;
    
    function aggiornaVariabile() {
        x = 15;
    }
    
    aggiornaVariabile()
    
    $("#demo").html(x) // Stampa 15 e non 5
    
    // perchè fondamentalmente sarebbe come scrivere
    
    var x = 5;
    
    x = 15;
    Quindi mi confermate che non c'è modo per aggiornare una variabile globale dall'interno di una funzione per poi farne uso in altri punti dello script che non sia all'interno della funzione stessa?

    codice:
    $(function() {
    var x = 5;
    
    $("#mioForm).on("submit", function(e) {
      e.preventDefault():
      x = $("#test).val(); 
    });
    
    
    $("#demo").html(x) // Non posso utilizzare x al di fuori perchè non stampa il valore aggiornato (15) ma stampa il valore iniziale (5)
    Scusate per le mille domande ma è un dubbio che devo assolutamente togliermi per evitare di trascinarmi errori in futuro.

    Grazie.

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    L'ho scritto prima. Se setti una variabile dopo di <script> nella parte header, vale per tutte le funzioni a patto che in una funzione non setti la stessa variabile con var.

    codice HTML:
    <script>
    var a = 15;
    function pippo() {
     alert(a);
    }
    function pluto() {
     var a = 314;
     alert(a);
    }
    function caio() {
     
     a = 1000;
     
    }
    pippo();
    pluto();
    pippo();
    caio();
    pippo();
    </script>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.