2016-05-08 17 views
1

JavaScriptから温度コンバータを作成しています。これまでは、ユーザーが最初に入力したときに摂氏変換のみが機能します。他のif文をどのように構造化するかを考え出すのは難しいです。JavaScriptの温度コンバータ(IF ELSE条件)

var conversionC; 
    var conversionF; 
    var conversionK; 

    if (celsius.value != "") { 
    conversionF = document.getElementById("celsius").value * 9/5 + 32; 
    document.getElementById("fahrenheit").value = Math.round(conversionF); 
    } 

    else if (fahrenheit.value != ""){ 
    conversionC = (document.getElementById("fahrenheit").value - 32) * 5/9; 
    document.getElementById("celsius").value = Math.round(conversionC); 
    } 

    if (kelvin.value != ""){ 
    conversionC = document.getElementById("celsius").value - -273; 
    document.getElementById("kelvin").value = Math.round(conversionC); 
    } 

私は私が持っている、まだ利用者は、第1の入力華氏またはケルビンに決定したときにそれが動作してい1つの変換]ボタンを維持したいです。

ご指導ありがとうございます。ここで

は、これまでの私のプログラムのJSFiddleです: https://jsfiddle.net/2sharkp/kw2sr1wx/

ありがとう!

+0

まあ一つの問題は、あなたの 'celsius'変数は数値を保持しているため、最初は'(celsius.value!=「」)場合は '常に、真の条件になる場合、数字は持っていないということですあなたが実際にテストしているものは 'if(undefined!=" ")'です。 'document.getElementById(" celsius ")。value!=" "'をテストする必要があります。別の問題は、すべての入力をデフォルトで '0'にすることです。そのため、空の文字列をテストすることは意味をなさないことです。 (あなたはおそらくユーザーに '0'を入力させたいと思うかもしれませんが、1つのConvertボタンでどのように扱うことができるかはわかりません) – nnnnnn

+0

" if、else if、else if "シリーズには何も間違いありません。または "if、else if、else"です。 – Nate

答えて

0

JSFiddleでは、それぞれの値をとり、parseFloatで浮動小数点数に変換しています。

これは、if (celsius.value != "")をヒットしたときに、undefinedという番号で.valueを呼び出していることを意味します。したがって、あなたは本当にif (undefined != "")と呼んでいます。これは真であり、最初のifブロックは常に実行されます。

私は、あなたの意図が最も最近編集されたフィールドを使用して変換のために使用することを前提としています。フラグを使って、最後に編集されたフィールドを示すことをお勧めします。

https://jsfiddle.net/camEdwards/chyg4ws1/

+0

ありがとうございました!これはまさに私が必要としたものでした。私は、HTML、CSS、JSコースへの加速イントロです。私たちはJSの最後のクラスに入ったばかりです。これまでのところ、私はそれをよく扱っていますが、これに関するロジックだけで苦労していました。あなたのコードがどれくらい読みやすいか本当にありがたいです! – ziggy