Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583

    togliere gli spazi davanti a una parola

    ciao

    ho una stringa:
    stringa ="casolare"
    durante l'esecuzione dello script (non so come nè perché) viene aggiunto uno spazio
    la stringa diventa : " casolare"
    devo eliminare quello spazio
    ho provato con
    stringa = stringa.trim()

    non funziona

    rudyF

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    durante l'esecuzione dello script (non so come nè perché) viene aggiunto uno spazio
    Ciao, perdonami ma quello che dici non ha molto senso se non spieghi cosa esattamente vai a fare con quella stringa e dove vai ad utilizzarla.
    Dovresti fornire maggiori dettagli.

    Diamo per buono che, di norma, JavaScript non può permettersi di andare ad aggiungere spazi a caso sulle variabili, per cui il problema è sicuramente altrove. Presumo che lo spazio sia aggiunto da qualche parte all'interno del tuo documento/progetto, nel contesto di utilizzo di tale variabile.

    La funzione trim() fa il suo dovere se usata opportunamente. Su questo non si può discutere. Evidentemente quello spazio viene aggiunto successivamente, oppure il valore viene alterato in qualche modo prima che tu vada a consultarlo/utilizzarlo.

    Impossibile fornirti una soluzione se non si conosce il contesto in cui è utilizzata tale variabile.
    Posta il link alla pagina pubblica dove sta il problema, se possibile, oppure posta eventuali codici/script e altri dettagli che possono influire su tale variabile.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Ho messo il programma sul mio sito.
    www.giochieducativi.eu/paroline.rar
    è un file compresso contenente due versioni dello stesso gioco
    in una parola lunga bisogno individuare altre piccole parole
    es.: in ventilatore ci sono venti, lato, ventilato, re, enti, ecc.
    queste paroline devono essere scritte in 10 input tipo testo
    dopo aver scritto una parolina bisogna premere un tasto per passare all’input successivo che prende il focus. In ParolineA si deve premere il tasto enter . Alla fine si deve premere la barra per controllare quante paroline esatte sono state scritte.
    ParolineA funziona.

    In ParolineB ho voluto togliere l’uso del tasto enter e ho messo un pulsante per il controllo finale.
    Quindi per passare da un input all’altro bisogna premere la barra. (function Avanzamento()
    La pressione della barra crea uno spazio che suppongo, venga aggiunto alla parolina successiva.
    Pertanto la prima parolina viene riconosciuta e le altre ovviamente no.

    Bisogna eliminare questo spazio.
    Il modo più semplice è usare Trim()
    Nella function Valutazione() ho modificato l’istruzione
    parola[w] = pr;
    in
    parola[w] = pr.trim();
    Non solo non funziona! ll programma si blocca.

    rudyF


  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Bene, ora mi è chiaro da dove salta fuori quello spazio

    In questo caso, la regola d'oro è "prevenire è meglio che curare".
    Cosa intendo per questo?

    A mio parere non ha senso che tu vada a ripulire i campi input a fine operazione ma sarebbe invece più opportuno, e funzionale, limitare l'inserimento dei caratteri consentiti per la finalità del gioco stesso.
    Dal momento che la regola del gioco è inserire solo delle paroline (tecnicamente, una serie di caratteri letterali e nulla di più) allora puoi "filtrare" in qualche modo l'inserimento dei caratteri direttamente durante la digitazione all'interno dei campi, escludendo di fatto tutti gli altri caratteri (compreso lo spazio) che in teoria non sono ammessi e non sono utili al gioco.

    Ora, non nego che trovo il tuo codice molto "artigianale" (senza alcuna offesa), sicuramente potrebbe essere ottimizzato parecchio, ma lasciando tutto così com'è, senza perderci in troppi dettagli, posso giusto fornirti un piccolo script da inserire dentro quello tuo. Puoi metterlo, più o meno dove preferisci, dentro il tag <script> in fondo al <body>:

    codice:
    (function(){
    var inp = document.getElementsByClassName('prl');
    for(var i=0; i<inp.length; i++){
      inp[i].oninput=function(){
        this.value = this.value.replace(/[^a-z]/gi,'').toLowerCase();
      };
    }
    })()
    In sostanza, assegna una funzione all'evento oninput, per ogni campo input in questione, in cui viene filtrato, tramite un'espressione regolare, l'inserimento di qualsiasi cosa all'interno dei campi stessi. I campi conterranno quindi solo lettere escludendo a priori qualsiasi spazio o altro carattere.

    Se servono chiarimenti chiedi tranquillamente.
    Buon proseguimento.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    farò così
    grazie

    rudyF

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    ciao
    ho inserito la function nello script e funziona BENISSIMO !

    L'editor che uso (PSPad) non riconosce qualcosa contenuta in questa function e ne blocca l'esecuzione.
    Mi consiglieresti un altro editor free in italiano ?

    Hai ragione quando dici che il mio è un codice artigianale.
    Col javascript sono meno che principiante. Mi limito a tradurre i giochi che avevo scritto in VBScript e ... basta che funzionino.

    nel for hai dichiarato la variabile i=0

    for(var i=0; i<inp.length; i++){

    io non lo faccio mai: for(i=0; i<inp.length; i++){

    è obbligatorio dichiararla?
    rudyF

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    L'editor che uso (PSPad) non riconosce qualcosa contenuta in questa function e ne blocca l'esecuzione.
    Prova ad aggiungere il ";" (punto e virgola) prima e dopo l'intera espressione:
    codice:
    ;(function(){
    var inp = document.getElementsByClassName('prl');
    for(var i=0; i<inp.length; i++){
      inp[i].oninput=function(){
        this.value = this.value.replace(/[^a-z]/gi,'').toLowerCase();
      };
    }
    })();
    Mi consiglieresti un altro editor free in italiano ?
    Dai uno sguardo a Brackets.

    ... basta che funzionino.
    Mi pare giusto è comunque una mediocre filosofia di vita (a mio personalissimo parere). Sicuramente ci si può sempre migliorare... poi, è chiaro, dipende principalmente dal contesto e dalle proprie aspirazioni.
    Ad ogni modo vedo che l'inventiva non ti manca, ed è già un buon punto

    nel for hai dichiarato la variabile i=0
    ...
    è obbligatorio dichiararla?
    Il discorso sarebbe lunghetto, cerco di sintetizzare:

    In JavaScript, normalmente, le variabili sono dichiarate in modo implicito dall'interprete JavaScript quando queste non sono state dichiarate esplicitamente col costrutto var. Tali variabili saranno però dichiarare e "ospitate" automaticamente nel contesto globale (global scope).
    In questo caso, in genere, è più probabile incappare in possibili conflitti tra nomi variabile uguali, che sono magari usati nello scope locale (all'interno di una funzione) e in quello globale, andando quindi a creare inevitabilmente dei grattacapi per lo sviluppatore. Inoltre una variabile che mi serve usare solo all'interno di una funzione, non ha motivo di essere "vista" fuori da questa. Nel caso specifico, la variabile i andrà a morire non appena finisce l'esecuzione di quella funzione. Se fosse stata globale sarebbe stata mantenuta in memoria occupando inutilmente risorse (sebbene lo spreco sarebbe stato irrisorio).

    Proprio per evitare tali problematiche e per garantire un migliore processo in fase di debug, è stata introdotta la direttiva "use strict", da indicare ad inizio script, con cui (se specificata) sarà obbligatorio dichiarare tutte le variabili in modo esplicito.

    In qualunque caso è buona consuetudine, nella programmazione (in generale), dichiarare sempre tutte le variabili, e sarebbe ancora meglio dichiararle tutte all'inizio dello script (o del relativo scope).
    Ad esempio, quello stesso script potrebbe essere scritto dichiarando, ad inizio funzione, le variabili usate nella funzione stessa e magari impostare un'unica riga di dichiarazione separando le variabili con l'uso della virgola, in questo modo:
    codice:
    ;(function(){
    var i, inp = document.getElementsByClassName('prl');
    for(i=0; i<inp.length; i++){
      inp[i].oninput=function(){
        this.value = this.value.replace(/[^a-z]/gi,'').toLowerCase();
      };
    }
    })();

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Brackets ce l'ho

    Tu non mi crederai ma non sono riuscito a trovare il pulsante per avviare il programma realizzato.

    grazie per la pazienza
    rudyF

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.