2017-12-04 20 views
1

'else if'ステートメントを多数使用できますか? たとえば、ユーロの入力番号 '6'を入力すると、7 usdと489 afnが自動的に表示されます。ユーザーが1つの入力に数値を書き込むと、それに応じて他の入力も変わるはずです。私は新しいjavascriptプログラマーです。多くのelse ifステートメントが機能しない

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p><input id="afn" onkeyup="convert('afn')"> afn</p> 
 

 
<p><input id="eur" onkeyup="convert('eur')"> eur</p> 
 

 
<p><input id="usd" onkeyup="convert('usd')"> usd</p> 
 

 

 
<script> 
 
function convert(degree) { 
 
    var x; 
 
    if (degree == "afn") { 
 
     x = document.getElementById("afn").value * 0.0122428; 
 
     document.getElementById("eur").value = Math.round(x); 
 
     
 
    }else if(degree == "afn") { 
 
     x = document.getElementById("afn").value * 0.0145290; 
 
     document.getElementById("usd").value = Math.round(x); 
 
     
 
    }else if(degree == "eur") { 
 
     x = document.getElementById("eur").value * 81.6808; 
 
     document.getElementById("afn").value = Math.round(x); 
 
     
 
    }else if(degree == "eur") { 
 
     x = document.getElementById("eur").value * 1.18698; 
 
     document.getElementById("usd").value = Math.round(x); 
 
     
 
    }else if(degree == "usd") { 
 
     x = document.getElementById("usd").value * 0.842561; 
 
     document.getElementById("eur").value = Math.round(x); 
 
    } 
 
    else { 
 
     x = document.getElementById("usd").value * 68.8277; 
 
     document.getElementById("afn").value = Math.round(x); 
 
    } 
 
} 
 
</script> 
 

 
</body> 
 
</html>

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch –

+0

' == "AFN" と'degree ==" eur "'は二度ですか? – tkausl

+1

if(degree == "afn")else if(degree == "afn")は実行できません。最初の条件は既にtrueです。 –

答えて

0

のみif...else句のシリーズの最初の成功の条件が実行されます。したがって、2つの条件が連続している場合、2番目の条件は決して使用されません。

else(ので、すべての条件がテストされます、でも、冗長なもの)、またはより良いを使用して、重複句を一緒にマージされません。次のいずれかの

if (degree == "afn") { 
    x = document.getElementById("afn").value * 0.0122428; 
    document.getElementById("eur").value = Math.round(x); 
    x = document.getElementById("afn").value * 0.0145290; 
    document.getElementById("usd").value = Math.round(x); 
}else if(degree == "eur") { 
    x = document.getElementById("eur").value * 81.6808; 
    document.getElementById("afn").value = Math.round(x); 
    x = document.getElementById("eur").value * 1.18698; 
    document.getElementById("usd").value = Math.round(x); 
}else if(degree == "usd") { 
    x = document.getElementById("usd").value * 0.842561; 
    document.getElementById("eur").value = Math.round(x); 
    x = document.getElementById("usd").value * 68.8277; 
    document.getElementById("afn").value = Math.round(x); 
} 

これは少しあなたが尋ねたものを超えて、

x = document.getElementById(degree).value; 
if (degree == "afn") {   
    document.getElementById("eur").value = Math.round(x * 0.0122428); 
    document.getElementById("usd").value = Math.round(x * 0.0145290); 
} else if (degree == "eur") { 
    document.getElementById("afn").value = Math.round(x * 81.6808); 
    document.getElementById("usd").value = Math.round(x * 1.18698); 
} else if (degree == "usd") { 
    document.getElementById("eur").value = Math.round(x * 0.842561); 
    document.getElementById("afn").value = Math.round(x * 68.8277); 
} 
+0

私はあなたを邪魔していない場合は、これらのレートは毎日、今日の最新の為替レートに、毎日更新することができますどのように私はあなたを邪魔していない場合、答えをありがとうございます1 EUR = 81.6638 AFN、それを自動的に最新のレートを取るために変更するには? –

+0

これはこの質問の範囲をはるかに超えていますが、基本的には、データを提供し、via ajaxでデータを取得し、ここで数学に適用するAPIを見つける必要があります。 –

+0

私は今apiを持っています。実装で私を助けてくれますか?endpoint = 'live'access_key =' YOUR_ACCESS_KEY '; $ .ajax({url: 'http://apilayer.net/api/'エンドポイント+ '?access_key =' + access_key、dataType: 'jsonp'、成功:function(json){alert(json.quotes。 amount = '10'、 '=' EUR '、from =' EUR '; to =' GBP '; end ='変換 '; access_key =' YOUR_ACCESS_KEY '; from =' EUR '; to =' GBP ' ; $。ajax({URL: 'http://apilayer.net/api/' +エンドポイント+ '?access_key =' + access_key + '&from =' + from + '&to =' + to + '&amount =' +データ型: 'jsonp'、成功:function(json){alert(json.result);}}); –

1

次のことを試してください:

function convert(degree) { 
 
    var a,e,u; 
 
    var afnRate = document.getElementById("afnRate").value; 
 
    var eurRate = document.getElementById("eurRate").value; 
 
    var usdRate = document.getElementById("usdRate").value; 
 
    if (degree == "afn") { 
 
    //e = document.getElementById("afn").value * 0.0122428; 
 
    e = document.getElementById("afn").value * eurRate; 
 
    document.getElementById("eur").value = Math.round(e); 
 

 
    //u = document.getElementById("afn").value * 0.0145290; 
 
    u = document.getElementById("afn").value * usdRate; 
 
    document.getElementById("usd").value = Math.round(u); 
 

 
    }else if(degree == "eur") { 
 
    //a = document.getElementById("eur").value * 81.6808; 
 
    a = document.getElementById("eur").value * afnRate; 
 
    document.getElementById("afn").value = Math.round(a); 
 

 
    //u = document.getElementById("eur").value * 1.18698; 
 
    u = document.getElementById("eur").value * usdRate; 
 
    document.getElementById("usd").value = Math.round(u); 
 

 
    }else if(degree == "usd") { 
 
    //e = document.getElementById("usd").value * 0.842561; 
 
    e = document.getElementById("usd").value * eurRate; 
 
    document.getElementById("eur").value = Math.round(e); 
 

 
    //a = document.getElementById("usd").value * 68.8277; 
 
    a = document.getElementById("usd").value * afnRate; 
 
    document.getElementById("afn").value = Math.round(a); 
 
    } 
 
}
<p><input id="afn" onkeyup="convert('afn')"> afn Rate:<input type="text" id="afnRate" placeholder="afn Rate"></p> 
 

 
<p><input id="eur" onkeyup="convert('eur')"> eur Rate:<input type="text" id="eurRate" placeholder="eur Rate"></p> 
 

 
<p><input id="usd" onkeyup="convert('usd')"> usd Rate:<input type="text" id="usdRate" placeholder="usd Rate"></p>
が、上記更なるように簡略化することができ

+0

私はあなたを邪魔していない場合、これらのレートは毎日変更されています、私はそれを今日、最新の為替レートに更新することができますどのように答えをありがとう、1今日のEUR = 81.6638 AFN、それは自動的に最新のレートを取る? –

+0

@ JoonasKarppinen、これを達成する方法の1つは、レートのためにさらに3つの入力フィールドを追加することです。 'eur'テキストを変更すると、' afn'と 'usd'にレートを指定します。同様に 'afn'を変​​更すると' eur'と 'usd'にレートを与えます。同様に 'usd'を変更すると' afn'と 'eur'でレートします。私は私の答えを更新しました。チェックしてください。希望します。 – Mamun

+0

私は、ユーザーが料金を自分で書く必要がないことを意味します。料金は今日のようにいくつかのAPIからオンラインになるはずです1 EUR = 81.6638 AFN多分明日の通貨の変更と1 EUR = 79.6638、それを書くには、私はそれを実装する方法を知らない。 new programmer –

0

else文では、条件が真であれば、他の文は実行されませんでした。

は、このコードを試してみてください。

<!DOCTYPE html> 
 
<html> 
 
<body> 
 

 
<p><input id="afn" onkeyup="convert('afn')"> afn</p> 
 

 
<p><input id="eur" onkeyup="convert('eur')"> eur</p> 
 

 
<p><input id="usd" onkeyup="convert('usd')"> usd</p> 
 

 

 
<script> 
 
function convert(degree) { 
 
    var eur = document.getElementById("eur").value; 
 
    var afn = document.getElementById("afn").value; 
 
    var usd = document.getElementById("usd").value; 
 
    
 
    if (degree == "afn") { 
 
     document.getElementById("eur").value = Math.round(afn * 0.0122428); 
 
     document.getElementById("usd").value = Math.round(afn * 0.0145290); 
 

 
    }else if(degree == "eur") { 
 
     document.getElementById("afn").value = Math.round(eur * 81.6808); 
 
     document.getElementById("usd").value = Math.round(eur * 1.18698); 
 
     
 
    }else if(degree == "usd") { 
 
     document.getElementById("eur").value = Math.round(usd * 0.842561); 
 
     document.getElementById("afn").value = Math.round(usd * 68.8277); 
 
    } 
 
} 
 
</script> 
 

 
</body> 
 
</html>

1

あなたは多くのelse ifのブロックを持っている場合、読みやすくするためswitchブロックを使用することをお勧めします。あなたは `学位を持っていないのはなぜ

"switch" statment (MDN)

function convert(degree) { 
    var x; 
    switch(degree) { 
     case "afn": // same as: if(degree=="afn") 
     x = document.getElementById("afn").value * 0.0122428; 
     document.getElementById("eur").value = Math.round(x); 
     x = document.getElementById("afn").value * 0.0145290; 
     document.getElementById("usd").value = Math.round(x); 
     break; 
     case "eur": // same as: if(degree=="eur") 
     x = document.getElementById("eur").value * 81.6808; 
     document.getElementById("afn").value = Math.round(x); 
     x = document.getElementById("eur").value * 1.18698; 
     document.getElementById("usd").value = Math.round(x); 
     break; 
     case "usd": // same as: if(degree=="usd") 
     x = document.getElementById("usd").value * 0.842561; 
     document.getElementById("eur").value = Math.round(x); 
     x = document.getElementById("usd").value * 68.8277; 
     document.getElementById("afn").value = Math.round(x); 
     break; 
     default: // smae as: else 
     break; 
    } 
} 
関連する問題