Есть ли способ установить значение <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]?
Используйте parseInt вокруг вашего значения select, например parseInt (опции [i] .value). Это будет int. –