2015-01-23 4 views
1

Я пытаюсь написать простую форму на HTML/Javascript, где я набираю число, добавляет один, а затем отображает его. Я получил его работу, но это было объединение одного, а не добавления его. Я использовал parseInt(), но он показывает «Нан». Какие-либо предложения?getElementById или parseInt не работает?

HTML, является:

<head> <link src="script.js" type="text/javascript"></script></head> 
<body> 
    <input type="text" id="grossSalary"> 
    <button type="button" onclick="calculateTax()"> 
    Generate Tax 
    </button> 
</body> 

Javascript является:

function calculateTax(){ 
    var salaryString = document.getElementById("grossSalary"); 
    var salaryInteger = parseInt(salaryString); 
    alert(salaryInteger + 1); 
} 

сообщение "Ошибка" Я получаю:

"Нан"

+0

Дополнительного примечания к существующим ответам. Вы всегда должны определять 'radix' для [parseInt] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt),' parseInt (зарплатаString, 10); ', иначе вы может получить неожиданный результат, когда кто-то решит добавить к 0 зарплаты. –

+0

Oh geez. Это мой первый вопрос переполнения стека, и мальчик, которого вы, ребята, быстры и гения! – Gil

ответ

3

Вы забыли извлечь значение от входного элемента:

var salaryString = document.getElementById("grossSalary").value; 
1

Проблема в вашем JavaScript, где вы установите переменную salaryString. Вам нужно убедиться, что вы выбрали значение элемента. Вроде так:

var salaryString = document.getElementById("grossSalary").value; 

После этого ваш код должен вести себя так, как ожидалось.

2

Вам необходимо получить значение, которое пропущено в вашем коде.

var salaryString = document.getElementById("grossSalary").value; 
0

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

function calculateTax(){ 
    var sal = document.getElementById("grossSalary"); 
    var salaryInteger = parseInt(sal.value); 
    alert(salaryInteger + 1); 
} 
+0

Как примечание: поскольку именованием является 'зарплатаString', было бы лучше иметь var varString = document.getElementById (" grossSalary "). Value;' или изменить именование на var varElement = document.getElementById ("grossSalary "), а затем выполните команду var varInteger = parseInt (значение зарплатыElement.value);' –

+0

, если вы используете метод выше, тогда вы можете использовать payString в качестве ссылки на элемент dom, и вы можете добавить другой прослушиватель событий непосредственно, т.е. значение зарплатыString.addEvenetListener(), так что это лучше, чем другой вариант, опубликованный выше. –

+0

Мой комментарий был о наименовании, «DOMElement» - это не 'String', так как сохранение его в значении, называемом' salleryString', может быть пропущено (особенно в более крупном коде). Часть после 'или изменить имя 'отличается только в имени переменной для вашего ответа. –

0

Метод getElementById() возвращает элемент, который имеет атрибут ID с заданным значением. Так что, когда вы пытаетесь как

var salaryString = document.getElementById("grossSalary"); 

так здесь salaryString является ссылкой на объект Element, или нулевое значение, если элемент с указанным идентификатором не в документе.

Если вы хотите сюда получить значение соответствующего текстового поля, то использовать что-то вроде

var salaryString = document.getElementById("grossSalary").value; 
Смежные вопросы