Вот мой проект, который возвращает наибольшее значение из трех чисел. Я хочу ввести 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;
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это потому, что вы получаете значения полей ввода, как только достигается тег скрипта в вашем 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>