2015-10-26 2 views
0

Я набираю целое число в поле ввода, и он все равно возвращает «NaN».JavaScript возвращает NaN, даже если ввод является целым числом

function goldenFunctiona() { 
 
    a = document.getElementById("sidea"); 
 
    parseInt(a, 10); 
 
    b = ((a + a) * (Math.pow(5, 0.5)))/2; 
 
    document.getElementById("b").innerHTML = b; 
 
}
<div id="top"> 
 
    <p>Side a =</p> 
 
    <input id="sidea" type="number"> 
 
    <button id="button" onclick="goldenFunctiona()" type="button">Find side b</button> 
 
    <p id="b"></p> 
 
</div>

Я не знаю, что происходит не так, но это, вероятно, что-то очень просто. Спасибо заранее.

+0

Чтобы уточнить ответы на приведенные ниже, все элементы формы являются ASCII-строки. Если вам нужно получить целочисленное значение, вам нужно сделать преобразование. – durbnpoisn

+0

'a' - это элемент, а не входное значение. Попробуйте 'parseInt (a.value, 10)' – wintvelt

+1

@durbnpoisn что? – DontVoteMeDown

ответ

4

document.getElementById("sidea") не возвращает номер, но элемент. Вместо этого используйте document.getElementById("sidea").value, чтобы получить значение элемента.

Итак:

function goldenFunctiona() { 
    var sideaVal = document.getElementById("sidea").value; 

    var a = parseInt(sideaVal , 10); // Get parseInt's return value or 'a' will still be a string 
    var b = ((a + a) * (Math.pow(5, 0.5)))/2; 

    document.getElementById("b").innerHTML = b; 
} 
+1

Чистое даже было бы 'a = parseInt (document.getElementById (" sidea "). Value), 10);' (Переназначение переменной a до совершенно другого типа переменной не очень чистый). – wintvelt

+1

@wintvelt теперь его чистый. – DontVoteMeDown

+1

, так как его не HTML, вы можете использовать textContent, его быстрее и безопаснее .. * хотя я не вижу, как эта функция могла бы вернуть что-то опасное в первую очередь – hanshenrik

Смежные вопросы