Ich habe verstanden, dass ich den globalen Geltungsbereich davon ändern muss, weil in der Schleife bezieht sich dies auf das Fensterobjekt. Aber wenn ich versuche, über eine Funktion eine Variable in meiner foreach-Schleife zu definieren, seine nicht funktioniert und ich weiß nicht, warum, obwohl mein functio den richtigen Wert zurückgibt :(Aufruf Benutzerfunktion in foreach Schleife
// simple class for xml import
function io() {
this.vertexes = [];
this.getVertexByID = function(id) {
this.vertexes.forEach(function(entry) {
if (id == entry.id) {
// correct element found, displayed and returned
console.log(entry);
return entry;
}
});
}
this.importXML = function(xmlString) {
cells = this.xmlToJson(xmlString);
var parent = graph.getDefaultParent();
var _this = this;
graph.getModel().beginUpdate();
try {
// addEdges
cells.XMLInstance.Edges.Relation.forEach(function(entry) {
// both will be empty but i dont understand why :(
fromVertex = _this.getVertexByID(entry.fromNode);
toVertex = _this.getVertexByID(entry.toNode);
var e1 = graph.insertEdge(parent, null, '', fromVertex, toVertex);
});
} finally {
graph.getModel().endUpdate();
}
}
Ihnen fehlt das abschließende '}'. –
@PatrickBarr Nr. 'El' wird mit' var' deklariert, was es auf die Funktion überträgt. Wenn es mit "let" deklariert würde, hätte es einen Blocklevel-Bereich. 'var' deklarierte Variablen sind auf ihre umschließende Funktion oder Global beschränkt, wenn sie nicht in einer Funktion enthalten sind. Der tatsächliche Ort der Deklaration spielt keine Rolle, da die Deklarationen gehisst werden. –