2016-11-14 2 views
-1

Я довольно новый для кодирования и пытался что-то для удовольствия, но я борюсь с этимСделать Math.max.apply прочитать переменные

function result() { 
var n1 = document.getElementById("N1"); 
var n2 = document.getElementById("N2"); 
var n3 = document.getElementById("N3"); 
var a = [n1,n2,n3]; 
var temp = Math.max.apply(Math, a) 
var out=document.getElementById("res").innerHTML = temp; 
} 

Я пытаюсь сделать его вывод числа, которые поступают через HTML

<td><input class="textBox" id="N3" type="number"/></td> 

Однако он не будет считать его номером и отобразит только NaN. Помощь была бы оценена.

+0

Что вам нужно 'temp' быть? Введено наибольшее значение? – BenM

+1

'var n1 = parseFloat (document.getElementById (" N1 "). Value)' и т. Д. –

+0

@BenM да темп должен быть самым высоким номером –

ответ

2

Если вам нужно temp быть максимальное значение введено, следующее будет работать:

function result() { 
    document.getElementById("res").innerHTML = Math.max(
     parseFloat(document.getElementById("N1").value), 
     parseFloat(document.getElementById("N2").value), 
     parseFloat(document.getElementById("N3").value) 
    ); 
} 

Некоторые комментарии:

  • Обратите внимание, что мы просто использовать Math.max(). apply() здесь не нужен, так как вы явно вызываете метод max().
  • Я предполагаю, что N1, N2 и т. Д. Являются элементами <input />, поэтому вам нужно получить их атрибут значения, используя .value.
  • Нам нужно обрабатывать значения из входов как поплавки (или целые числа, если это работает), поэтому мы используем parseFloat() (или parseInt() соответственно). Это технически не требуется в большинстве современных браузеров, но, тем не менее, является хорошей практикой.
+0

Почему вы думаете, что '1ruyrgjyes _ !!% &" /)% &·)/& /) 'следует рассматривать как' 1'? 'ParseFloat' и' parseInt' - это плохие способы разбора произвольных строк в виде чисел. – Oriol

+0

Да , но они объясняют последствия кастинга с использованием 'Number()' (и имеют дело с 'NaN' внутри' Math.max() ') - это целая другая червь червей, которая ИМО выходит за рамки оригинала вопрос. – BenM

0

Ваш n1, n2 и n3 являются элементами не значения элементов:

function result() { 
var n1 = document.getElementById("N1").value; 
var n2 = document.getElementById("N2").value; 
var n3 = document.getElementById("N3").value; 
var a = [n1,n2,n3]; 
var temp = Math.max.apply(Math, a) 
    var out=document.getElementById("res").innerHTML = temp; 
} 
Смежные вопросы