Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583

    Lo script mi funziona male

    Ciao
    Lo script (VBScript) di una pagina web non funziona come dovrebbe e non capisco perchè. La Sub "Valutazione" legge il "Value" di 10 Input tipo text e li mette in un array, subito dopo confronta questo array con delle parole esistenti, ma ne salta una.
    Questo succede quando negli Input si scrivono solo una o due parole. Il programma ti dice che sono poche e ti invita a continuare. Ne scrivo delle altre, ma nel controllo ne salta una.
    Perchè?. La sub è sempre quella!
    Volete aiutarmi?

    La spiegazione è un po' incasinata, quindi è meglio provare.
    La pagina è quì sotto (solo il necessario)
    Scrivi una parolina contenuta nella parolona in alto e premi "Enter"
    Si passa all'Input seguente
    Premi la barra per il controllo
    Grazie
    rudyF

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html> <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <style type="text/css"> <!--
    body {background-color:#AACCFF; overflow-x:hidden; overflow-y:hidden;}
    .tst {color:#000000; text-align:center; font-style:normal; font-size:30pt;
           font-weight:bold; font-family:Times New Roman, Arial, Verdana; border:2px solid;  border-color:#000000;}
    .prl {color:#000000; text-align:center; font-style:normal; font-size:20pt;
          font-weight:normal; font-family:Times New Roman, Arial, Verdana;
          width:300px; height:40px; position:absolute; left:0px; background:#FFCCFF; border-color:#000000;}       
    .msgg {color:#000000; text-align:center; font-style:normal; font-size:28pt; font-weight:normal; 
          font-family:Times new Roman, Arial, Verdana;}  
    --> </style>
    </head>
    <body onKeyDown="javascript:Tastiera(event.keyCode);" onload="self.focus();">
    
    <p id="Testo" class="tst" style="width:490px; height:45px; position:absolute; left:155px; top:40px; z-index:1; background-color:#FF00FF;"></p>
    <div style="width:300px; height:360px; position:absolute; left:65px; top:125px; z-index:1;">
    <input id="Inserto1" type="text" class="prl" style="top:0px; z-index:1;" OnMouseUp="Cliccato(1);">
    <input id="Inserto3" type="text" class="prl" style="top:45px; z-index:1;" OnMouseUp="Cliccato(3);">
    <input id="Inserto5" type="text" class="prl" style="top:90px; z-index:1;" OnMouseUp="Cliccato(5);">
    <input id="Inserto7" type="text" class="prl" style="top:135px; z-index:1;" OnMouseUp="Cliccato(7);">
    <input id="Inserto9" type="text" class="prl" style="top:180px; z-index:1;" OnMouseUp="Cliccato(9);">
    </div>
    <div style="width:300px; height:360px; position:absolute; left:425px; top:125px; z-index:1;">
    <input id="Inserto2" type="text" class="prl" style="top:0px; z-index:1;" OnMouseUp="Cliccato(2);">
    <input id="Inserto4" type="text" class="prl" style="top:45px; z-index:1;" OnMouseUp="Cliccato(4);">
    <input id="Inserto6" type="text" class="prl" style="top:90px; z-index:1;" OnMouseUp="Cliccato(6);">
    <input id="Inserto8" type="text" class="prl" style="top:135px; z-index:1;" OnMouseUp="Cliccato(8);">
    <input id="Inserto10" type="text" class="prl" style="top:180px; z-index:1;" OnMouseUp="Cliccato(10);">
    </div>
    <p id="Messaggio" class="msgg" style="width:810px; height:45px; position:absolute; left:-5px; top:390px; z-index:1; background-color:#FF0000;" OnMouseUp = "Proseguimento()"></p>
    
    <script language="VBScript"> <!--
    Dim scelta, posizione, contagiuste, vai, q 
    q = False
    
    Sub window_onLoad()
    Randomize
    Call Preparazione
    End sub
    
    Sub Preparazione()
    posizione = 1
    contagiuste = 0
    vai = False
    Inserto1.Focus
    Call Azzera
    End Sub
    
    Sub Azzera()
    For h = 1 To 10
    Set InsertoX = Eval("Inserto" & h)
    InsertoX.Value = ""
    InsertoX.style.background = "#FFCCFF"
    parola(h) = ""
    Next
    Call SceglieParola
    End Sub
    
    Sub SceglieParola()
    vocabolo(12) = "contachilometri"
    scelta = 12
    Testo.InnerText = UCase(vocabolo(12))
    vai = True
    End Sub
    
    '******************************************************************************'
    
    Sub Tastiera(x)
    If vai = False Then Exit Sub
    If x = 13 Then
       Call Avanzamento
       Exit Sub
    End If
    If x = 32 Then 
       Call Avanzamento
       Call Valutazione
    End If
    End Sub
    
    Sub Avanzamento()
    vai = False
    posizione = posizione + 1
    If posizione > 10 Then posizione = 1
    Set InsertoX = Eval("Inserto" & posizione) 
    InsertoX.Focus
    window.setTimeout "Ritardo", 500, "VBScript"
    End Sub
    
    Sub Ritardo()
    vai = True
    End Sub
    
    Sub Cliccato(x)
    posizione = x
    End Sub
    
    Sub Valutazione()   
    For h = 1 To 10    ' legge i 10 Value e li mette nell'array parola(x)
       Set InsertoX = Eval("Inserto" & h)   ' qui li legge tutti
       parola(h) = InsertoX.Value
    Next 
    contagiuste = 0  
    For k = 1 To 10
    For h = 1 To numerovoci(scelta)         ' numerovoci(12) = 11
    If parola(k) = voce(scelta, h) Then     ' qui NON le riconosce tutte
       Set InsertoX = Eval("Inserto" & k)  
       InsertoX.style.background = "#009900"
       contagiuste = contagiuste + 1 
      if q = True Then msgbox parola(k)   ' riga aggiunta per debugging' 
    End If
    Next
    Next
    Call Conteggio
    End Sub
    
    Sub Conteggio()
    Select case contagiuste
     case 0   Messaggio.InnerText = "non hai trovato neppure una parolina?"
              window.setTimeout "Riprova", 3000, "VBScript"
     case 1   Messaggio.InnerText = "una parola è veramente troppo poco"
              window.setTimeout "Riprova", 3000, "VBScript"
     case 2   Messaggio.InnerText = "dovresti impegnarti un po' di più"
              window.setTimeout "Riprova", 3000, "VBScript"
     case 3   Messaggio.InnerText = "mmm,  benino"
              window.setTimeout "Ricomincia", 5000, "VBScript"
     case 4   Messaggio.InnerText = "va  bene"
              window.setTimeout "Ricomincia", 5000, "VBScript"
    End Select
    End Sub
    
    Sub Riprova()
    q = True
    vai = True
    Messaggio.InnerText = "guarda  bene"
    For h = 1 To 10
    Set InsertoX = Eval("Inserto" & h) 
    InsertoX.style.background = "#FFCCFF"
    Next
    End Sub
    
    '*******************************************************************************'
    
    Dim voce(20,12), parola(20), numerovoci(20), vocabolo(20)
    
    voce(12,1) = "conta"
    voce(12,2) = "chilo"
    voce(12,3) = "metri"
    voce(12,4) = "con"
    voce(12,5) = "onta"
    voce(12,6) = "chi"
    voce(12,7) = "lo"
    voce(12,8) = "me"
    voce(12,9) = "chilometri"
    voce(12,10) = "metrico"
    voce(12,11) = "il"
    numerovoci(12) = 11
    
    --> </script> 
    </body> </html>

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Il codice va formattato quando viene inserito nel forum, usando l'apposito tag [CODE] (qui l'ho aggiunto io).

    Inoltre, c'è una sezione dedicata al linguaggio Visual Basic (che include VBS), quindi invito a postare qui in futuro le domande relative a questo linguaggio.

    Infine, suggerisco di usare titoli più significativi per le discussioni (qui l'ho modificato io per fornire l'esempio) indicando anche il linguaggio nel titolo.

    Per queste e altre indicazioni, rimando al Regolamento di quest'area.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    583
    Ciao
    Ho risolto l'arcano.
    La pressione della barra ci manda alla sub "Avanzamento" che dà il Focus all'input successivo, ma la pressione della barra genera anche uno spazio vuoto che viene inserito proprio in questo input, pertanto la parola che verrà scritta sarà preceduta da quello spazio e così non potrà essere uguale a quella del confronto.
    Ho risolto usando la funzione "Trim" che toglie gli spazi.
    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.