Почему выходное значение отображается как NaN

Предполагается, что код находит сумму двух значений времени, введенных в часах и минутах, но он дает мне вывод «NaN».

function add() {
  var min, hrs;
  let a = Number(document.getElementById("first"));
  let b = Number(document.getElementById("third"));
  let c = Number(document.getElementById("second"));
  let d = Number(document.getElementById("fourth"));
  min = c + d;
  hrs = min / 60;
  min = min % 60;
  hrs = hrs + a + b;
  document.write(hrs);
  document.write(min);
}
<h1>Time Calculator</h1>
<h2>This calculator can be used to “add” two time values.</h2>
Enter hours: <input id = "first"> 
Enter Minutes: <input id = "second"> 
Enter hours: <input id = "third"> 
Enter Minutes: <input id = "fourth">
<button onclick = "add()">ADD</button>

Пожалуйста, включите ваш код в текст вашего поста; ссылки могут порваться.

mykaf 13.01.2023 21:50

я пытался, но он показал какую-то ошибку отступа

Zikatro Vizago 13.01.2023 21:55

Я думаю, у вас опечатка: min = min%60

Jim VanPetten 13.01.2023 22:00
Number уже создает номер. Звонок value на номер возвращает undefined.
Dave Newton 13.01.2023 22:11

@DaveNewton, который был в исходном коде, был таким с самого начала, я просматривал некоторые сайты и добавлял их позже. забыл удалить при размещении здесь, даже без этого ответ тот же

Zikatro Vizago 13.01.2023 22:14

@JimVanPetten нет, чувак, я думаю, это не опечатка ..

Zikatro Vizago 13.01.2023 22:14

Теперь вы пытаетесь создать число из элемента, а не из текстового значения элемента. Также может быть хорошей идеей написать ответ на элемент, а не использовать document.write.

Dave Newton 13.01.2023 22:17

Также см. этот связанный вопрос: Какие есть альтернативы document.write?

Yogi 13.01.2023 22:31
Поведение ключевого слова "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) для оценки ваших знаний,...
0
8
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вы пропускаете ценностные вызовы на getElementByIds! Так:

  let a = Number(document.getElementById("first").value);
  let b = Number(document.getElementById("third").value);
  let c = Number(document.getElementById("second").value);
  let d = Number(document.getElementById("fourth").value);

Быстрая рекомендация: добавьте type = "number" к входным данным, чтобы убедиться, что входные данные являются числами.

<h1>Time Calculator</h1>
<h2>This calculator can be used to “add” two time values.</h2>
Enter hours: <input id = "first" type = "number"> 
Enter Minutes: <input id = "second" type = "number"> 
Enter hours: <input id = "third" type = "number">  
Enter Minutes: <input id = "fourth" type = "number">
<button onclick = "add()">ADD</button>

Полный код:

function add() {
  var min, hrs;
  let a = Number(document.getElementById("first").value);
  let b = Number(document.getElementById("third").value);
  let c = Number(document.getElementById("second").value);
  let d = Number(document.getElementById("fourth").value);
  min = c + d;
  hrs = min / 60;
  min = min % 60;
  hrs = hrs + a + b;
  document.write(hrs);
  document.write(min);
}

еще не рабочий человек...

Zikatro Vizago 13.01.2023 22:21

Попробуйте полную функцию редактирования, которое я только что сделал. Я получил это, работая над кодовой ручкой: codepen.io/Chanodev/pen/yLqXqga. Попробуйте добавить всего 2 с.

Luciano 13.01.2023 22:24

Помните, что вы можете легко отлаживать свой код построчно, используя только браузер.


и ты это поймешь, позвонив

document.getElementById("fourth")

вернет узел, но вы завершаете его Number()

а затем вы звоните .value с выхода Number()

то, что вы могли бы сделать вместо этого, было бы, например,

        function getNumber(str) {
            return Number(document.getElementById(str).value);
        }
        function add() {
            var min, hrs;
            let a = getNumber("first");
            let b = getNumber("third");
            let c = getNumber("second");
            let d = getNumber("fourth");
            min = c + d;
            hrs = min / 60;
            min = min % 60;
            hrs = hrs + a + b;
            document.write(hrs);
            document.write(min);
        }

живой пример

function getNumber(str) {
    return Number(document.getElementById(str).value);
}
function add() {
  var min, hrs;
  let a = getNumber("first");
  let b = getNumber("third");
  let c = getNumber("second");
  let d = getNumber("fourth");
  min = c + d;
  hrs = min / 60;
  min = min % 60;
  hrs = hrs + a + b;
  document.write(hrs);
  document.write(min);
}
<h1>Time Calculator</h1>
<h2>This calculator can be used to “add” two time values.</h2>
Enter hours: <input id = "first"> 
Enter Minutes: <input id = "second"> 
Enter hours: <input id = "third"> 
Enter Minutes: <input id = "fourth">
<button onclick = "add()">ADD</button>

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