2015-08-09 3 views
0

Может кто-нибудь, пожалуйста, сообщите, почему переменная 'inputValue' в приведенной ниже функции не преобразуется в число. Я ожидал, что второй console.log сообщит, что переменная теперь является номером (так как я применил к нему parseInt). Но, по-видимому, это все еще строка.Преобразование строки в номер в JS

function checkIfNum(){ 
    var inputValue = document.getElementsByTagName('input')[0].value; 
    console.log(inputValue); 

    // Convert to a number 
    parseInt(inputValue); 

    console.log(typeof(inputValue)); 
} 

ответ

3

Вы не сделали ничего с результате в parseInt так как он стоит, вы делаете typeof на первоначальной стоимости inputValue который является строкой. Назначают результат parseInt к inputValue и ваш код будет работать нормально:

function checkIfNum(){ 
    var inputValue = document.getElementsByTagName('input')[0].value; 
    console.log(inputValue); 

    // Assign the result of parseInt 
    inputValue = parseInt(inputValue, 10); 

    console.log(typeof(inputValue)); 
} 

JsFiddle (Stack Отрывки, как представляется, вниз).

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

+0

Благодарности RGraham - один день, когда я получу мозг программиста. – swisstony

+0

@swisstony Эй, все мы ошибаемся! Другим людям легче видеть проблемы в коде, чем видеть свои собственные :) – CodingIntrigue

1

Потому что вы не назначаете результат parseInt на что угодно, а конкретно не на inputValue. Для устранения неисправности:

inputValue = parseInt(inputValue); 
0

необходимо сохранять возвращаемое значение из parseInt(inputValue) в качестве новой переменной или перезаписать существующий один

function checkIfNum(){ 
var inputValue = document.getElementsByTagName('input')[0].value; 
console.log(inputValue); 

// Convert to a number 
var newInputValue = parseInt(inputValue); 

console.log(typeof(newInputValue)); 
} 
Смежные вопросы