2016-08-08 19 views
0

Während des Alerts wird der Index des ersten Elements angezeigt, dh Violett wird angezeigt -1. Aber das ist unerwartet, um ein korrektes Ergebnis zu erhalten.Hier bin ich nicht in der Lage, das erwartete Ergebnis zu erhalten dass ich in der Kodierung weiter gehen kann. Wirklich m neu zu Javascript, also bin ich mit solch einem Problem konfrontiert. Hoffe, dass Sie answerme, sobald Sie können.indexOf() zeigt unerwarteten Wert

var colors = ["voilet", "indigo", "blue", "green", "yellow", "orange", "red"]; 
 
var target; 
 
var target_index; 
 
var guess_input; 
 
var finished = false; 
 

 
function do_game() { 
 
    var random_number = Math.random() * 7; 
 
    var random_number_integer = Math.floor(random_number); 
 
    var target_index = random_number_integer; 
 
    target = colors[target_index]; 
 
    alert(target); 
 
    while (!finished) { 
 

 
    var guess_input = prompt("I am thinking of a color " + 
 
     "violet,indigo,blue,green,yellow,orange,red" + 
 
     "What is the color?"); 
 
    alert(colors.indexOf(guess_input)); 
 
    finished = check_guess(); 
 
    } 
 
} 
 

 
function check_guess() { 
 

 
    if (colors.indexof(guess_input) < 0) { 
 
    alert('not present'); 
 
    return false; 
 
    } 
 
    if (guess_input > target) { 
 
    alert('you gave large'); 
 
    return false; 
 
    } 
 
    if (guess_input < target) { 
 
    alert('you gave small'); 
 
    return false; 
 
    } 
 
    return true; 
 
}

+2

'indexOf' gibt' -1' zurück, wenn das Element nicht im Array gefunden wurde. Sie haben einen Tippfehler in Ihrem 'colours' Array (voilet statt violet) – AbM

+0

Zu Ihrer Information: Die Frage sollte nicht wegen eines einfachen Tippfehlers geschlossen werden, da das hier nicht das Problem ist. Die am besten gewählte Antwort zur Behebung des Tippfehlers würde den Code NICHT reparieren. – epascarello

+0

Der Tippfehler FIXED den Code .. das war der Fehler – Weedoze

Antwort

5

Du hast gesagt, dass Ihr guess_inputviolet ist und es gibt -1

Dies ist das normale Verhalten ist, weil violet im Array nicht vorhanden ist

["voilet","indigo","blue","green","yellow","orange","red"]; 

Es ist ein Tippfehler ror: Sie schrieb voilet statt violet

0

guess_input ist mit einem var innerhalb der do_game Funktion definiert, damit es nicht global ist.

Sie müssten die var entfernen, damit auf die anderen Methoden zugegriffen werden kann, oder sie an die andere Methode übergeben.

/* fixed spelling here */ 
 
var colors = ["violet", "indigo", "blue", "green", "yellow", "orange", "red"]; 
 
var target; 
 
var target_index; 
 
var guess_input; 
 
var finished = false; 
 

 
function do_game() { 
 
    var random_number = Math.random() * 7; 
 
    var random_number_integer = Math.floor(random_number); 
 
    var target_index = random_number_integer; 
 
    target = colors[target_index]; 
 
    alert(target); 
 
    while (!finished) { 
 
    /* removed var here */ 
 
    guess_input = prompt("I am thinking of a color " + 
 
     "violet,indigo,blue,green,yellow,orange,red" + 
 
     "What is the color?"); 
 
    alert(colors.indexOf(guess_input)); 
 
    finished = check_guess(); 
 
    } 
 
} 
 

 
function check_guess() { 
 

 
    /* fixed typo here */ 
 
    if (colors.indexOf(guess_input) < 0) { 
 
    alert('not present'); 
 
    return false; 
 
    } 
 
    if (guess_input > target) { 
 
    alert('you gave large'); 
 
    return false; 
 
    } 
 
    if (guess_input < target) { 
 
    alert('you gave small'); 
 
    return false; 
 
    } 
 
    return true; 
 
} 
 

 
do_game()

+0

Falsch, 'guess_input' ist außerhalb der Funktionen 'var''d. –

+0

@NiettheDarkAbsol WRONG 'var guess_input = prompt' Danke für den falschen Downvote. – epascarello

+0

Huh, redeclared Variable. Meinetwegen. –

0

die Rechtschreibung violett in Ihrem Array prüfen.

und

if (colors.indexof(guess_input) < 0) { 
    alert('not present'); 
    return false; 
    } 

Sie haben auch hier einen Tippfehler. Es sollte sein:

Verwandte Themen