Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    Condizione che salta di palo in frasca

    Ciao, in una semplice applicazione che sto costruendo sto avendo un grattacapo su una cosa apparentemente semplice, ovvero questa: nel codice che riporto qui sotto quando la variabile k avrà lunghezza 3 caratteri, dovrebbe entrare nel ciclo di verifica di quanto scritto ma in realtà quando ha anche sun solo carattere salta dentro il secondo if annidato, quello con la condizione v.indexOf('no') per capirsi.
    codice:
    function textInput(id) {
         var k = document.getElementById(id).value;
         if (k.length >= 3) {
                        var v = verifica(id);
                        if (v.indexOf('si') > 0) {
                            document.getElementById(id + 'Explanation').innerHTML = 'Il nickname esiste già, cortesemente scrivine un altro.';
                        } 
                        if (v.indexOf('no') > 0) {
                            document.getElementById(id + 'Explanation').innerHTML = 'Ok!';
                        }
         }
    };
    La spiegazione dello script è abbastanza semplice: lo script viene richiamato dall'evento keyup di una text box che passa il proprio id alla funzione textInput, questa prende la stringa digitata dal campo di testo e la passa a k; quando k è di tre caratteri minimo viene soddisfatta la prima condizione e va alla verifica....
    .... il problema è proprio che non fa esattamente questo ma nonostante sia al primo carattere ad esempio, entra nella seconda condizione e questo per me non ha senso. Non dovrebbe entrare lì, anzi dovrebbe proprio saltare l'intero ciclo di annidamento.
    Vi ho allegata un'immagine dove si vede parte della pagina e firebug con i campi di controllo evidenziati.
    Spero di essere stato chiaro, mi date una mano? Grazie.
    Immagini allegate Immagini allegate

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    verifica() cos'è? Una funzione? Attendi che venga eseguita (non sembrerebbe)?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    verifica() cos'è? Una funzione? Attendi che venga eseguita (non sembrerebbe)?
    Sì ma non è questo il punto, non deve proprio verificarla se k.length non è uguale a 3, invece va direttamente oltre comunque, ma non chiama la funzione verifica(), non verifica nemmeno la seconda condizione ( prima nidificata ) non verifica nemmeno la seconda condizione nidificata, no ci salta direttamente dentro!
    Almeno secondo firebug.

    Comunque sto andando a testare un secondo progetto che usa a pieno jquery, per ora sta dando discreti risultati, quello stesso punto viene verificato al terzo passaggio, insomma va bene, ma rimane il fatto che qui no, e la cosa mi fa incaSSare perché non capisco.
    Ah se tolgo i riferimenti a verifica() e metto v = 'si' o v = 'no' a mano, non cambia nulla, quindi il problema non è la.

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, personalmente non vedo il problema che segnali. Lo script NON salta dentro l'ultima condizione, a meno che le varie condizioni non risultino vere.

    ci salta direttamente dentro!
    Almeno secondo firebug.
    Mi viene da pensare che tu sia tratto in inganno dal fatto che su firebug, mentre stai eseguendo il debug step by step, sia evidenziata in giallo (e col triangolino) la riga dentro l'ultima condizione.
    Il fatto è che quella riga viene evidenziata perché è l'ultima riga che viene "esaminata" per quello specifico stack. Questo non significa che tale riga venga eseguita, ma soltanto che il quel momento lo stato di avanzamento dello script si trova in quel determinato punto in fondo alla riga.

    Dal momento che tutto lo script per quello stack (in poche parole, lo script all'interno di quella funzione) è stato esaminato, ecco che lo stato di avanzamento si posiziona alla fine della funzione (cioè in fondo all'ultima riga di script "potenzialmente" eseguibile) prima di uscire dalla funzione stessa. Questo viene semplicemente segnalato all'utente mostrando, appunto, la riga evidenziata.
    In sostanza ti sta dicendo: "Oh, guarda che ho finito di eseguire tutta la roba dentro questa funzione. Se tu non te ne fossi accorto, ora sto aspettando in fondo alla funzione, dopo l'ultima riga del tuo script. Nel prossimo step, esco dalla funzione!"
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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.