2016-04-10 21 views
0

の値を実際の整数に設定する方法はありますか?私は次の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(options [i] .value)'のように、選択値を中心にparseIntを使用します。それはintになります。 –

答えて

1

あなたはこのようにそれからint型の値を取得するためにparseInt()を使用することができます。

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

のJavaScriptファイルでparseInt(...)を使用するようにしてください。

+0

素晴らしいです。まだいくつかの基本的なJavascriptの機能を学んでいます。私は別の質問があります。私は文字列から整数に変換する必要があるオプション値を参照しようとしていますが、浮動小数点数であり、オプションの値(1.2から1.9の範囲)を参照するときには1を返します。 –

+0

@ShaunLこれは、 'parseInt'が文字列をintとして解析するためです。 'parseFloat'もあります。 –

関連する問題