2016-04-10 3 views
0

Есть ли способ установить значение <option> на фактическое целое число? У меня есть следующий HTML-код:Значение <select><option> Возвращение как строка

<select id="proteinperc" onchange="setMacrosProtein()"> 
     <option value="0" selected>0%</option> 
     <option value="5">5%</option> 
     <option value="10">10%</option> 
     <option value="15">15%</option> 
     <option value="20">20%</option> 
     <option value="25">25%</option> 
     <option value="30">30%</option> 
     <option value="35">35%</option> 
     <option value="40">40%(Rec.)</option> 
     <option value="45">45%</option> 
     <option value="50">50%</option> 
     <option value="55">55%</option> 
     <option value="60">60%</option> 
     <option value="65">65%</option> 
     <option value="70">70%</option> 
     <option value="75">75%</option> 
     <option value="80">80%</option> 
     <option value="85">85%</option> 
     <option value="90">90%</option> 
     <option value="95">95%</option> 
     <option value="100">100%</option> 
    </select> 

Тогда у меня есть сценарий ниже, который пытается получить доступ к этим значения параметров и выполнять вычисления, используя их. Проблема в том, что когда я выполняю с ними какие-либо вычисления, все, что я получаю, это конкатенация строк или странные значения.

function setMacrosProtein() { 
myProtein = document.getElementById("proteinperc").value; 
var removeValue = 101 - (myProtein+myFats+myCarbs); 
alert(removeValue); // Alert here just for testing the first calculation. 
var x = document.getElementById("fatperc").options.length; 
for(i = 0; i < x; i++) { 
    // Check fatperc 
    if(document.getElementById("fatperc").options[i].value + myFats >= removeValue) { 
     document.getElementById("fatperc").options[i].disabled = true; 
    } else if(document.getElementById("fatperc").options[i].value + myFats < removeValue) { 
       document.getElementById("fatperc").options[i].disabled = false; 
      } 
    // Check carbperc 
    if(document.getElementById("carbperc").options[i].value+myCarbs >= removeValue) { 
     document.getElementById("carbperc").options[i].disabled = true; 
    } else if(document.getElementById("carbperc").options[i].value+myCarbs < removeValue) { 
       document.getElementById("carbperc").options[i].disabled = false; 
      } 
} 
//setCals(); 
} 

Если нет никакого способа, чтобы возвращать целое число от значения параметра, у меня есть обходной путь в виде, но с небольшой проблемой. Я мог бы настроить новый массив с зеркалированием значений в список опций, т. Е. Array [0] был бы равен опции [0], и я мог бы проверить массив в моих операциях if.

Однако, как бы я установил переменную в текущий выбранный вариант таким образом? Как ссылаться на позицию текущего выбранного параметра в массиве параметров, чтобы получить зеркальную позицию в моем вновь созданном массиве? Чтобы уточнить, если выбранная опция в настоящее время является опцией [4], как я могу ссылаться на ее позицию, чтобы затем вывести значение массива [4]?

+0

Используйте parseInt вокруг вашего значения select, например parseInt (опции [i] .value). Это будет int. –

ответ

1

Вы можете использовать parseInt(), чтобы получить значение Int из него, как это:

myProtein = parseInt(document.getElementById("proteinperc").value); 
-1

В JavaScript файл попробуйте использовать parseInt(...).

+0

Удивительно, что работает. Все еще изучая некоторые базовые функции Javascript, так голые со мной здесь. У меня есть еще один вопрос. Я пытаюсь ссылаться на значение параметра, которое мне нужно преобразовать из строки в integer, но оно является float и продолжает возвращаться как 1 при ссылке на значение параметра (которое варьируется от 1,2 до 1,9). –

+0

@ShaunL Это потому, что 'parseInt' анализирует строку как int. Существует также 'parseFloat'. –

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