2017-05-16 4 views
1

In meinem Code habe ich einen Fehler gefunden.foreach loop JavaScript funktioniert nicht

Wenn Sie diesen Javascript-Code ausführen und schauen, was die Konsole ausgibt.

Ich werde eine ToDo-Liste haben Ich werde neu in etwas einfügen, was ich tun möchte, groß, es ist zu dem Array hinzugefügt. Ich werde dann wieder neu schlagen, großartig, habe noch etwas hinzugefügt, um das Array zu machen.

Momentan sollte ich zwei Elemente in meinem Array [0] und [1] richtig haben?

Wenn ich versuche, die Elemente zu löschen, funktioniert es nicht. Ich muss die löschen Schlüsselbegriffe wie zwei Mal verwenden, dann die Liste drücken, damit es wieder funktioniert? Idk, wenn es nur ein Fehler auf meiner Seite, aber führen Sie meine Javascript-Anwendung verwenden Sie die keyterms in der HTML-Seite und versuchen Sie, neue Dinge zu tun, um sie aufzulisten, dann versuchen Sie, sie zu löschen. Es funktioniert, aber es funktioniert nicht beim ersten Versuch.

Warnung wird der Browser ständig offenen Alerts bis quit eingegeben wird

var todos = [""]; 
 
var input = prompt("What would you like to do today?"); 
 

 
while (input !== "quit") { 
 
    if (input === "list") { 
 
    todos.forEach(function(todo, i) { 
 
     console.log(i + ": " + todo); 
 
    }); 
 
    } else if (input === "new") { 
 
    var newTodo = prompt("Enter new thing to do"); 
 
    todos.push(newTodo); 
 
    } else if (input === "delete") { 
 
    var index = prompt("Enter index of todo to delete"); 
 
    todos.splice(index, 1); 
 
    } 
 

 
    input = prompt("What would you like to do?"); 
 
} 
 
console.log("Ok, you have quit the application");
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Todo List</title> 
 

 
</head> 
 

 
<body> 
 
    <h1>To Do List</h1> 
 
    <ul> 
 
    <li>"new" - Add A Todo</li> 
 
    <li>"list" - List all Todos</li> 
 
    <li>"Delete" A Specific Todo</li> 
 
    <li>"quit" - quit the application</li> 
 

 

 
    </ul> 
 
</body> 
 

 
</html>

Antwort

3

Es ist schwer zu sagen, was Sie negative Ergebnisse zu produzieren tun, aber hier ist meine beste rate:

var todos = [""]; bedeutet, dass Ihr Array mit einer leeren Zeichenfolge bei todos[0] beginnt . Sie sollten das Array mit var todos = []; initialisieren.

+0

Hey Mann, du hast absolut recht! Es funktioniert jetzt! Als ich mein Array mit "" darin hatte, hat es den Index bereits bei 0 gestartet. Ich fragte mich immer wieder, warum ich den ersten Gegenstand mit einem Index von 1, aber nicht 0 haha ​​löschen sollte. Danke, Mann!! –

+0

Spot auf! Das ist das erste, was mir auch aufgefallen ist. Er sollte ein leeres Array entweder als 'var todos = [];' (bevorzugt) oder alternativ als 'var todos = new Array();' initialisieren. – cezar

+0

Ich werde diese Antwort akzeptieren, wenn es mich in 3 Minuten btw lässt :) –