Максимальное значение трех чисел манипуляции с DOM

Вот мой проект, который возвращает наибольшее значение из трех чисел. Я хочу ввести 3 числа в три поля ввода, которые у меня есть, и когда я нажимаю кнопку «Рассчитать», я хочу, чтобы после h1 отображалось наибольшее из этих трех чисел. Я передаю входные данные в числа, затем создаю массив из этих трех чисел, затем перебираю массив, сравнивая каждый элемент с первым. Но это не работает. Я действительно не могу найти ошибку в своем коде. Кто-нибудь может помочь?

Вот HTML:

 <!DOCTYPE html>
    <html>
    <head>
     <meta charset = "UTF-8">
     <title>Max Value Of Three Numbers</title>

    </head>
    <body>
     <h1>The biggest number is: <span id = "maxDisplay">0</span></h1>
     <input type = "number" name = "" id = "num1">
     <input type = "number" name = "" id = "num2">
     <input type = "number" name = "" id = "num3">
     <button id = "calculateMax">Calculate</button>

     <script type = "text/javascript" src = "maxValue.js"></script>
    </body>
    </html>

И JavaScript:

var maxDisplay = document.querySelector("#maxDisplay");

var number1 = document.getElementById("num1");
var num1 = Number(number1.value);
var number2 = document.getElementById("num2");
var num2 = Number(number2.value);
var number3 = document.getElementById("num3");
var num3 = Number(number3.value);
var arr = [num1, num2, num3];

var calculateMax = document.getElementById("calculateMax");

var maxNumber = 0;



calculateMax.addEventListener("click", function(){
    var maxNumber = arr[0];
    for (var i = 1; i < arr.length; i++) 
    {
        if (arr[i] > maxNumber) 
            { 
                maxNumber = arr[i];
            }
    }
    maxDisplay.textContent = maxNumber;

});
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
187
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это потому, что вы получаете значения полей ввода, как только достигается тег скрипта в вашем HTML-файле (скрипт загружается), поэтому в этот момент эти значения пусты. Переместите часть вашего кода вот так.

var maxDisplay = document.querySelector("#maxDisplay");
var calculateMax = document.getElementById("calculateMax");
var maxNumber = 0;
var number1 = document.getElementById("num1");
var number2 = document.getElementById("num2");
var number3 = document.getElementById("num3");

calculateMax.addEventListener("click", function(){
    var num1 = Number(number1.value);
    var num2 = Number(number2.value);
    var num3 = Number(number3.value);
    var arr = [num1, num2, num3];

    var maxNumber = arr[0];
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] > maxNumber)
            maxNumber = arr[i];
    }
    maxDisplay.textContent = maxNumber;

});

Таким образом, вы получите эти значения при нажатии кнопки. И в качестве примечания, вы можете получить максимум массива, не набирая вручную для цикла, подобного этому.

maxDisplay.textContent = Math.max.apply(null, arr);

var res = document.getElementById('maxDisplay');
var num1 = document.getElementById('num1');
var num2 = document.getElementById('num2');
var num3 = document.getElementById('num3');
var btn = document.getElementById('calculateMax')
btn.addEventListener('click',function() {
var arr = [num1.value,num2.value,num3.value]
res.innerHTML = Math.max(...arr);
})
<html>
    <head>
     <meta charset = "UTF-8">
     <title>Max Value Of Three Numbers</title>

    </head>
    <body>
     <h1>The biggest number is: <span id = "maxDisplay">0</span></h1>
     <input type = "number" name = "" id = "num1">
     <input type = "number" name = "" id = "num2">
     <input type = "number" name = "" id = "num3">
     <button id = "calculateMax">Calculate</button>
    </body>
    </html>

Другие вопросы по теме