2017-09-19 8 views
-1

Ich programmiere ein Wortspiel in Html/Javscript. Sie müssen das Wort erraten. Wenn ein Buchstabe richtig ist, erhält der Buchstabe einen grünen Hintergrund (das funktioniert). Aber jetzt will ich, dass, wenn der Buchstabe im Wort ist, aber in der richtigen Position nicht, wird der Hintergrund (dies ist die Ausgabe)Wie überprüfe ich, ob meine Eingabe in einem Array ist

for (i = 0; i < invoer.length; i++) { 
    if(rand[i] == invoer[i].value.toUpperCase()) {       
    if(countClick == 1) { 
     // Here the background will become green when its correct 
     invoer[i].value = rand[i]; 
     var invoer1 = document.hetForm.L01; 
     invoer1[i].value = rand[i]; 
     invoer[i].style.background = "green"; 
     invoer1[i].style.background = "green";      
    } 

    if(countClick == 2) { 
     invoer[i].value = rand[i]; 
     var invoer2 = document.hetForm.L02; 
     invoer2[i].value = rand[i]; 
     invoer[i].style.background = "green"; 
     invoer2[i].style.background = "green"; 
    } 

    if(countClick == 3) { 
     invoer[i].value = rand[i]; 
     var invoer3 = document.hetForm.L03; 
     invoer3[i].value = rand[i]; 
     invoer[i].style.background = "green"; 
     invoer3[i].style.background = "green"; 
    } 

    if(countClick == 4) { 
     invoer[i].value = rand[i]; 
     var invoer4 = document.hetForm.L04; 
     invoer4[i].value = rand[i]; 
     invoer[i].style.background = "green"; 
     invoer4[i].style.background = "green"; 
    } 

    if(countClick == 5) { 
     invoer[i].value = rand[i]; 
     invoer[i].style.background = "green"; 
    } 

    // DOE EEN GROENE ACHTERGROND ALS DE LETTER JUIST IS. 
    invoer[i].style.background = "green"; 
    goed++; 
    } else { 
    if(rand.indexOf(invoer[i].value)) { 
     invoer[i].style.background = "yellow"; 
    } else { 
     alert(invoer[i].value); 
    } 
    } 
} 

invoer ist der Name meines Eingangs gelb sein. Rand ist ein zufälliger Wert meines Arrays.

Der Code wird alle Buchstaben, die nicht korrekt oder nicht in der richtigen Position gelb ist.

+0

'if (rand.indexOf (invoer [i] .value)> -1)'? - 'if (-1) {alert ('true')}' ist wahr, obwohl '-1' falsch sein sollte und 'if (0) {alert (' wahr ')} 'falsch ist, obwohl' 0 'sollte stimmen, also solltest du wahrscheinlich gegen' -1 'und nicht nur' if (wahr) 'denken. – Nope

+0

@Fran Nein immer noch die gleiche Störung –

+2

Ich glaube nicht, dass Ihr Fragetitel überhaupt Ihre eigentliche Frage beschreibt ... – wally

Antwort

0

Ihr Code scheint in Ordnung, das Problem ist der Test, den Sie tun, der falsch ist. indexOf gibt den Index zurück, an dem er im Array gefunden wurde, oder -1. Da die Indizes bei 0 beginnen, und Sie truthy Wert testen, wird dies immer richtig sein, es sei denn der Brief in den ersten Index des Arrays zu finden ist ... Korrigieren Sie, wenn mit diesem:

if(rand.indexOf(invoer[i].value.toUpperCase())>-1) 

Auch Wie in Ihrer oberen IF-Anweisung, verwenden Sie auch .toUpperCase(), wenn der Fall keine Rolle spielt. Ihr Code zeigt es nicht, aber ich nehme an rand mit Kapitellen bevölkert wurde ...

1

eine Alternative zu Ihrem Code:

var rand = ["A", "B", "C", "D"]; 
var input = "BEND"; 

for (var index = 0; index < input.length; index++) { 

    var colorCode = getColorCodeForInputLetter(index, input[index]); 
    console.log(input[index], "=>", colorCode); 

} 

function getColorCodeForInputLetter(index, letter) { 

    // Check if the letter is in the rand Array 
    if (rand.indexOf(letter) !== -1) { 

     // Check if the index of the letter is equals to the index of the letter in the array 
     if (rand.indexOf(letter) === index) { 
      console.log(letter, "correct"); 
      return "green"; 
     } else { 
      console.log(letter, "in rand"); 
      return "yellow"; 
     } 

    } else { 
     console.log(letter, "not in rand"); 
     return "red"; 
    } 

} 

Ich habe rand dies in Knoten und der Ausgang ist:

B in rand 
E not in rand 
N not in rand 
D correct 
Verwandte Themen