2017-07-07 3 views
0

Ich wollte ein einfaches Eingabefeld erstellen, das den Wert von dem verwendet, was eingegeben wurde, um die Fläche eines Dreiecks zu berechnen, und ich bemerkte etwas mit meiner Funktion. Ich bemerkte, dass meine Funktion aus irgendeinem Grund nicht auf die Variablen zugreifen konnte, die im globalen Bereich erstellt wurden. wie folgt aus:Die JavaScript-Funktion greift nicht auf den globalen Bereich zu?

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 

input 1: <input type="input" placeholder="Side a" id="sideA"> <br> 
input 2: <input type="input" placeholder="Side b" id="sideB"><br> 
input 3: <input type="input" placeholder="Side c" id="sideC"><br> 
<button onclick=" AreaResults()"> Calculate</button> 

<p id="P_result"> 

    The area of the triangle is: 
</p> 
<script > 

var side_a = document.getElementById("sideA").value; 
    var side_b = document.getElementById("sideB").value; 
    var side_c = document.getElementById("sideC").value; 

var Allsides = side_c + side_b + side_a; 
var perimeter = Allsides/2; 
var area = Math.sqrt((perimeter*(perimeter-side_a)*(perimeter-side_b)*(perimeter-side_c))); 


function AreaResults(){ 


    var resultsInput = document.getElementById("P_result"); 
    resultsInput.append(area); 

} 



</script> 
</body> 
</html> 

Nachdem sie in die Funktion wie folgt bewegen:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 

input 1: <input type="input" placeholder="Side a" id="sideA"> <br> 
input 2: <input type="input" placeholder="Side b" id="sideB"><br> 
input 3: <input type="input" placeholder="Side c" id="sideC"><br> 
<button onclick=" AreaResults()"> Calculate</button> 

<p id="P_result"> 

    The area of the triangle is: 
</p> 
<script > 



function AreaResults(){ 

var side_a = document.getElementById("sideA").value; 
    var side_b = document.getElementById("sideB").value; 
    var side_c = document.getElementById("sideC").value; 

var Allsides = side_c + side_b + side_a; 
var perimeter = Allsides/2; 
var area = Math.sqrt((perimeter*(perimeter-side_a)*(perimeter-side_b)*(perimeter-side_c))); 


    var resultsInput = document.getElementById("P_result"); 
    resultsInput.append(area); 

} 



</script> 
</body> 
</html> 

Alles funktioniert gut. Ich verstehe nicht, weil ich dachte, dass Funktionen auf alle Variablen im globalen Gültigkeitsbereich zugreifen können

+0

Woher wissen Sie, dass Sie nicht darauf zugreifen können? – Carcigenicate

+0

der Code funktioniert nicht, wenn ich es innerhalb der Funktion geschrieben habe – george

Antwort

6

Sie greifen auf die Variablen gut zu.

Sie haben sie jedoch festgelegt, bevor der Benutzer etwas eingegeben hat (wenn die Seite geladen wurde), also sind sie leer.

Verwandte Themen