2017-09-16 2 views
0
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <meta name="description" content="Demonstrates some logic errors" /> 
    <meta name="keywords" content="HTML, average, errors" /> 
    <title>Average numbers</title> 
    <script src="badaverage.js"></script> 
</head> 
<body> 
    <h1>Average numbers</h1> 
    <p>Click the button to enter a series of numbers to average</p> 
    <button id="enter">Enter your first number</button> 
    <p><span id="numberList"></span></p> 
    <button id="calculate">Calculate the average</button> 
    <p><span id="result"></span></p> 

</body> 
</html> 

/* 
    JavaScript used with 'average.html' 
    Use an interactive debugger to find the errors in the JavaScript below 
*/ 

"use strict"; 
//Global variables accessible to all functions 
var numbers = []; //create an empty array 
var enterButton = null; //global variables must be initialised 
var calculateButton = null; 

/* Get a number from the prompt 
* If a valid number add to array, if not give error message to user 
* Display the updated array of numbers on the web page 
* Make the Calculate button visible 
*/ 
function enterNumber(){ 
    var number = prompt("Enter your number"); 
    var number = Number(number); //WHAT DOES THIS LINE DO? 
    if (number >= 0) { // test what is entered is a number 
     numbers.push(number); //add the number entered to the end of the array 
    } 
    else{ 
     alert("Please enter a valid number"); 
    } 
    document.getElementById("numberList").innerHTML = "The numbers you have entered so far are: " + numbers; //diplay a list of number entered 
    enterButton.textContent = "Enter your next number"; //change the label on the Enter Button 
    calculateButton.style.visibility = "visible";  //show the button - uses the CSS property of the elenment 
}  
/* Calculate the sum and average of the array of number 
* Display the results on the web page 
*/ 
function calculateAverage(){ 
    var average = 0; 
    var total = 0; 
    for (var i = 0 ; i <= numbers.length; i++){  
     total = numbers[i]; //add the each number in the array to the cumulative total 
    } 
    average = total/i; 
    document.getElementById("result").innerHTML = "The total of your numbers is " + total + " and their average is " + average; 
} 

function init(){ 
     enterButton = document.getElementById("enter"); 
     calculateButton = document.getElementById("calculate"); 
     calculateButton.style.visibility = "hidden"; //hide the Calculate button until some numbers are entered 
     enterButton.onclick = enterNumber; 
     calculateButton.onclick = calculateAverage; 
} 

window.onload = init; 

Alles sieht aus wie es in meinem Code erwartet auf der Linie 33 in meinem JavaScript, um die ‚Funktion calculateAverage‘ scheint nicht funktioniert zu arbeiten, wenn ich auf die Schaltfläche klicken um den Durchschnitt zu berechnen ich ‚NaN‘, wie mein Ergebnis, ich bin nicht sicher, wie ich dieses Problem beheben kann, so würde etwas Hilfe sehr dankbar, dankeBerechnung der durchschnittlichen Zahlen

Antwort

1

Sie iterieren die Zahlen für 1 weitere Iteration im Vergleich zu der Anzahl der Elemente im Array numbers. Aktualisieren Sie es auf: for (var i = 0; i < numbers.length; i++) {. Der Grund für Ihr Problem ist, wenn Sie auf numbers[numbers.length] zugreifen, ist der Wert undefined und undefined/numbers.length ist NaN.

Und, müssen Sie neue Zahlen zur Gesamt hinzuzufügen: total += numbers[i];

/* 
 
    JavaScript used with 'average.html' 
 
    Use an interactive debugger to find the errors in the JavaScript below 
 
*/ 
 

 
"use strict"; 
 
//Global variables accessible to all functions 
 
var numbers = []; //create an empty array 
 
var enterButton = null; //global variables must be initialised 
 
var calculateButton = null; 
 

 
/* Get a number from the prompt 
 
* If a valid number add to array, if not give error message to user 
 
* Display the updated array of numbers on the web page 
 
* Make the Calculate button visible 
 
*/ 
 
function enterNumber() { 
 
    var number = prompt("Enter your number"); 
 
    var number = Number(number); //WHAT DOES THIS LINE DO? 
 
    if (number >= 0) { // test what is entered is a number 
 
    numbers.push(number); //add the number entered to the end of the array 
 
    } else { 
 
    alert("Please enter a valid number"); 
 
    } 
 
    document.getElementById("numberList").innerHTML = "The numbers you have entered so far are: " + numbers; //diplay a list of number entered 
 
    enterButton.textContent = "Enter your next number"; //change the label on the Enter Button 
 
    calculateButton.style.visibility = "visible"; //show the button - uses the CSS property of the elenment 
 
} 
 
/* Calculate the sum and average of the array of number 
 
* Display the results on the web page 
 
*/ 
 
function calculateAverage() { 
 
    var average = 0; 
 
    var total = 0; 
 
    for (var i = 0; i < numbers.length; i++) { 
 
    total += numbers[i]; //add the each number in the array to the cumulative total 
 
    } 
 
    average = total/i; 
 
    document.getElementById("result").innerHTML = "The total of your numbers is " + total + " and their average is " + average; 
 
} 
 

 
function init() { 
 
    enterButton = document.getElementById("enter"); 
 
    calculateButton = document.getElementById("calculate"); 
 
    calculateButton.style.visibility = "hidden"; //hide the Calculate button until some numbers are entered 
 
    enterButton.onclick = enterNumber; 
 
    calculateButton.onclick = calculateAverage; 
 
} 
 

 
window.onload = init;
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <meta name="description" content="Demonstrates some logic errors" /> 
 
    <meta name="keywords" content="HTML, average, errors" /> 
 
    <title>Average numbers</title> 
 
    <script src="badaverage.js"></script> 
 
</head> 
 

 
<body> 
 
    <h1>Average numbers</h1> 
 
    <p>Click the button to enter a series of numbers to average</p> 
 
    <button id="enter">Enter your first number</button> 
 
    <p><span id="numberList"></span></p> 
 
    <button id="calculate">Calculate the average</button> 
 
    <p><span id="result"></span></p> 
 

 
</body> 
 

 
</html>

0

Änderungen vorgenommen:

  1. In der Schleife i<=numbers.length-i<numbers.length geändert.

calculateAverage Funktion aktualisiert

function calculateAverage(){ 
    var average = 0; 
    var total = 0; 
    for (var i = 0 ; i < numbers.length; i++){  
     total += numbers[i]; //add the each number in the array to the cumulative total 
    } 

    average = total/i; 

    document.getElementById("result").innerHTML = "The total of your numbers is " + total + " and their average is " + average; 
} 
+0

Ihr Gesamtwert wird nicht immer aktualisiert. Es sollte "total + = Zahlen [i]" sein. – Nisarg

+0

Danke aktualisiert. –

Verwandte Themen