javascript - 三个数字的最大值 DOM 操作

标签 javascript arrays function dom dom-manipulation

这是我的项目,它返回 3 个数字中的最大值。我想要做的是在我拥有的三个输入字段中输入 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;

});

最佳答案

这是因为一旦到达 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;

});

这样,您将在单击按钮时获得这些值。附带说明一下,您无需像这样手动输入 for 循环即可获得数组的最大值。

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

关于javascript - 三个数字的最大值 DOM 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596762/

相关文章:

objective-c - 快速枚举比嵌套枚举中的 for 循环慢(带有测试结果)?

java - java中如何获取不带空格的输入?

c - 如何正确定义函数返回的结构?

javascript - 如何在 localStorage 中正确存储文本框值?

php - 如何从 php 中的字符串中仅获取确定数量的单词?

javascript - 计算有多少项落在另一个元素之间 Jquery

javascript - 复选框值始终为 false ASP MVC 5

javascript - 使用 jQuery 将 1 个 div 分成 2 个高度相同的独立 div?

javascript - backand.js 未缩小版的 CDN 地址是多少

php - 如何删除数组中的重复项