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>