2016-07-06 3 views
0

Ein Anfänger Frage:Zugriff auf eine Variable, die durch Benutzer von separater Datei in JS erhielt

Ich mag würde eine App erstellen, wo ich eine imaginäre Zahl von Benutzern erhalten und es zu komplexer Ebene zu zeichnen. Da ich hoffe, später weitere Dinge hinzufügen zu können, behalte ich den Code in separaten Dateien, verbunden in HTML-Datei.

In erster Datei, erhalte ich die reale und der komplexeste Teil von dem Benutzer:

$(document).ready(function() { 
$("#button-number").click(function() { 
    var realPart = prompt("Please, enter the real Part of the number:") 
    var imagPart = prompt("Please, enter the imaginary Part of the number:") 
});}) 

, die ich in der zweiten Datei:

$(document).ready(function() { 
var c = document.getElementById("ComplexPlane"); 
var number = c.getContext("2d"); 
number.beginPath(); 
number.arc(500+50*realPart,300-50*imagPart,10,0,2*Math.PI); 
number.stroke(); 
number.fill();}) 

Dies ist jedoch nicht funktioniert. Es funktioniert, wenn ich die Variablen manuell außerhalb der Funktion definiere. Ich bin nicht ganz sicher, wie alle Operationen zeitgesteuert sind, da meine Variablen beim Laden des Dokuments nicht definiert sind. Ich würde gerne wissen, wie ich dieses Problem lösen kann.

+2

Mögliche Duplikate von [Was ist der Gültigkeitsbereich von Variablen in JavaScript?] (Http://StackOverflow.com/Questions/500431/what-is-the-Scope-of-Variables-in-Javascript) – Turnip

+0

Versuchen Sie es mit einem Modulladesystem. – gcampbell

+0

Mögliches Duplikat von [JavaScript-Zugriff auf Variablen, die in externen .js-Dateien definiert sind] (http://stackoverflow.com/questions/10864732/javascript-accessing-variables-defined-in-external-js-files) –

Antwort

0

Dies funktioniert wie erwartet.

mit Stattdessen globale Variable Umfang Sie local

http://www.w3schools.com/html/html5_webstorage.asp

Sie die realen Imaginärteil Zahlen in localstorage in der ersten Datei speichern kann nutzen könnten. Und Sie können auf sie in Ihrer zweiten Datei zugreifen.

+0

Vielen Dank. Ich habe diese Lösung für jetzt verwendet, da es einfacher ist. – Ardweaden

0

ich dies was du versuchst zu tun?

$("#button-number").click(function() { 
    var realPart = prompt("Please, enter the real Part of the number:") 
    var imagPart = prompt("Please, enter the imaginary Part of the number:") 
    if (realPart != null && imagPart != null) { 
    var c = document.getElementById("ComplexPlane"); 
    var number = c.getContext("2d"); 
    number.beginPath(); 
    number.arc(parseInt(realPart),parseInt(imagPart),10,0,2*Math.PI); 
    number.stroke(); 
    } 
}); 

https://jsfiddle.net/LeroyRon/93jvtrae/ oder einen Teil von dem, was Sie tun ...
und realpart imagPart könnte in einem globalen Umfang oder der Lagerung eingestellt werden.

+0

Ja, aber der Unterschied ist, dass der Code zum Zeichnen in einer separaten Datei ist. – Ardweaden