Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В конвертере на JS получается NaN

Руслан Ахматов Знаток (399), закрыт 5 лет назад
Есть такой код. Не могу понять, почему получается NaN.
Конвертер должен работать так, есть инпут и селект. нужно записать и выбрать данные (число и в какой ед. измерения).

В 10 инпутах ниже, записываются переведенные значения.

JS:

var conv_massa_inputs = document.getElementsByClassName('conv_massa_input'); // 10 инпутов, в которых будут записываться значения в разных величинах
var select_conv_massa = document.getElementsByClassName('conv_select_massa');// тег селект, в котором находятся величины, при этом у оптионов валью от 0 до 9.
var dano_input_conv_massa = document.getElementsByClassName('conv_massa_input_dano')[0]; // инпут, где записывается данное значение.
var ob_conv_massa;

dano_input_conv_massa.addEventListener('blur', func_conv_massa)

function func_conv_massa() {
parseInt(dano_input_conv_massa.value);
//тут я перевожу любое значение, которое у меня есть, в килограммы, чтобы потом перевести из кг, в нужные величины
if (select_conv_massa.value == 0) {
ob_conv_massa = dano_input_conv_massa.value * 0.001;
} else if (select_conv_massa.value == 1) {
ob_conv_massa = dano_input_conv_massa.value * 0.01;
} else if (select_conv_massa.value == 2) {
ob_conv_massa = dano_input_conv_massa.value * 1;
} else if (select_conv_massa.value == 3) {
ob_conv_massa = dano_input_conv_massa.value * 1000;
} else if (select_conv_massa.value == 4) {
ob_conv_massa = dano_input_conv_massa.value * 1000000;
} else if (select_conv_massa.value == 5) {
ob_conv_massa = dano_input_conv_massa.value * 1000000000;
} else if (select_conv_massa.value == 6) {
ob_conv_massa = dano_input_conv_massa.value * 1.9927 * Math.pow(10,-26);
} else if (select_conv_massa.value == 1) {
ob_conv_massa = dano_input_conv_massa.value * 2.27;
} else if (select_conv_massa.value == 1) {
ob_conv_massa = dano_input_conv_massa.value * 0.0028349523125;
} else if (select_conv_massa.value == 1) {
ob_conv_massa = dano_input_conv_massa.value * 0.06104633416;
}

parseInt(ob_conv_massa);

var array = [0.001, 0.01, 1, 1000, 1000000, 1000000000, 0.000000000000000000000000019927, 2.27, 0.0028349523125, 0.06104633416];

for(var i = 0; i < conv_massa_inputs.length; i++) {
conv_massa_inputs[i].value = ob_conv_massa * parseInt(array[i]);;
}
}
Дополнен 5 лет назад
Лучший ответ
Elepsis Eclipse Гений (67326) 5 лет назад
Ага, а ничоу, что select_conv_massa — это набор элементов, полученных по классу? У него не может быть .value (т. е. может, но он unudefined)

Нужно во-первых прогнать их через for, во-вторых, вместо кучи условий if, можно использовать один массив и достать его элементы по тем же номерам 1, 2, 3...

Нужна ваша разметка на fiddle, чтобы точно сказать)
Руслан АхматовЗнаток (399) 5 лет назад
Elepsis Eclipse Гений (67326) align="..." атрибуты убрали из стандарта HTML5... теперь пишут text-align: center в CSS. https://jsfiddle.net/OPTlMUS/6z1eq5yj/ - работает. value у опций тоже убрал, они не нужны, если брать их индекс. querySelector('.класс') находит первый такой класс на странице и останавливается... а getElementsByClassName('..')[0] находит первый и еще идет по всей странице искать все остальные такие классы. Первый быстрее)
Остальные ответы
франциск 1 Просветленный (24674) 5 лет назад
Помести все это на https://jsfiddle.net/ , а сюда кинь ссылку ...ибо мне лень это делать.
Сергей Жаков Мудрец (16210) 5 лет назад
куда передается значение
parseInt(dano_input_conv_massa.value);
Руслан АхматовЗнаток (399) 5 лет назад
это инпут с известным значением. Далее в цикле фор он умножается на опр. коэффициенты и записывается в остальных инпутах.
Руслан АхматовЗнаток (399) 5 лет назад
а парсеинтом я пытался сделать из строкового значения числовое. Думал ошибка была в этом
Elepsis Eclipse Гений (67326) Этот parseInt там вообще ничего не делает, кстати. Чтобы работало, надо писать x = parseInt( x );
Сергей ЖаковМудрец (16210) 5 лет назад
var num = parseInt( dano_input_conv_massa.value );

далее работаем с переменной num
ее числовые значения
Похожие вопросы