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
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
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.durante l'esecuzione dello script (non so come nè perché) viene aggiunto uno spazio
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
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
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>:
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.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(); }; } })()
Se servono chiarimenti chiedi tranquillamente.
Buon proseguimento.
farò così
grazie
rudyF
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
Prova ad aggiungere il ";" (punto e virgola) prima e dopo l'intera espressione:L'editor che uso (PSPad) non riconosce qualcosa contenuta in questa function e ne blocca l'esecuzione.
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(); }; } })();Dai uno sguardo a Brackets.Mi consiglieresti un altro editor free in italiano ?
Mi pare giusto... basta che funzionino.è 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
Il discorso sarebbe lunghetto, cerco di sintetizzare:nel for hai dichiarato la variabile i=0
...
è obbligatorio dichiararla?
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(); }; } })();
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