2016-07-13 1 views
0

temp()というスイッチ関数を作成しようとしましたが、一度値を挿入するとその定義を表示できるようになりました。 現在、これがすべてでは動作しませんし、私も「もし...もしそうでなければ...」メソッドを使用しようとしましたが、最初の2つのケースが実際に動作する理由min - max要素のスイッチ

function temp() { 
    var x = parseInt(document.getElementById('temp').value); 
    var y = document.getElementById('temp1'); 
    switch (x) { 
     case x < 36: 
      y = hypothermia; 
      break; 
     case x > 37: 
      y = hyperthermia; 
      break; 
     case x > 38,5: 
      y = pyrexia; 
      break; 
     default: 
      y.style.display = 'none'; 
    } 
} 

私は理解できません残りはちょうど無視されます(そして、私はすでに順序を入れ替えてみました)。

function temp() { 
    var x = parseInt(document.getElementById('temp').value); 
    var y = (document.getElementById('temp1')); 
    if (x < 36) y.style.background = "yellow",y.style.color = "blue",y.innerHTML = "hypothermia"; 
    else if (x < 37) y.style.display = "none"; 
    else if (x > 37) y.style.background = "yellow",y.style.color = "black",y.innerHTML = "hyperthermia"; 
    else if (x > 38) y.style.background = "red",y.style.color = "black",y.innerHTML = "pyrexia"; 
} 

機能が動作するはずHTMLページはこれです:場合は、他の真の試用版が

から呼び出されることのみ最初の条件付き、場合によって

<table> <tr> <td>TEMPERATURA (°C)</td> <td><input type="text" style="font-size:100%" maxlength="4" size="4" id="temp"></td> <td><h3 id="temp1"></h3></td> </tr> </table>

+0

あなたのswitch文は何もするつもりはありません。実際に要素 'temp1'を編集するのではなく、yを再割り当てします。 –

+0

@Paul R私はちょうどJavascriptを使用しています –

+0

@ChristopherSchneider 私は数週間だけjavascriptについて少し学んできましたので、私のような初心者を説明してください。関数?ありがとう。 –

答えて

0

あなたがこれにあなたの機能を変更する場合、それは動作します。 parseFloatparseIntから変更

  • ので、あなたのx > 38.5は最高またはそうでなければ、常に値のx > 37 37よりも高いとx > 38.5
  • を打つことはありませんが解除されますから始めて、検証可能な
  • スワップ検証のためになります
  • あなたがswitch (true)

function temp() { 
 
    var x = parseFloat(document.getElementById('temp').value.replace(',','.')); 
 
    var y = document.getElementById('temp1'); 
 
    y.style.display = 'block'; 
 
    switch (true) { 
 
    case x > 38.5:     /* comma, changed to dot */ 
 
     y.innerHTML = "pyrexia";  /* assing to inner HTML */ 
 
     break; 
 
    case x > 37: 
 
     y.innerHTML = "normal"; 
 
     break; 
 
    case x < 36: 
 
     y.innerHTML = "hypothermia"; 
 
     break; 
 
    default: 
 
     y.style.display = 'none'; 
 
    } 
 
} 
 
document.querySelector('input').addEventListener('input', temp);
<table> 
 
    <tr> 
 
    <td>TEMPERATURA (°C)</td> 
 
    <td><input type="text" style="font-size:100%" maxlength="4" size="4" id="temp"></td> <td><h3 id="temp1"></h3></td> 
 
    </tr> 
 
</table>
にスイッチを設定する必要がある表現を使用できるようにするには

if elseバージョン

function temp() { 
 
    var x = parseFloat(document.getElementById('temp').value.replace(',','.')); 
 
    var y = document.getElementById('temp1'); 
 
    y.style.display = 'block'; 
 
    if (x > 38.5) { 
 
     y.innerHTML = "pyrexia"; 
 
    } else if (x > 37) { 
 
     y.innerHTML = "normal"; 
 
    } else if (x < 36) { 
 
     y.innerHTML = "hypothermia"; 
 
    } else { 
 
     y.style.display = 'none'; 
 
    } 
 
} 
 

 
document.querySelector('input').addEventListener('input', temp);
<table> 
 
    <tr> 
 
    <td>TEMPERATURA (°C)</td> 
 
    <td><input type="text" style="font-size:100%" maxlength="4" size="4" id="temp"></td> <td><h3 id="temp1"></h3></td> 
 
    </tr> 
 
</table>

+0

ありがとう、それは動作しません –

+0

@ NathanMantovani私の答えを更新 – LGSon

+0

ありがとう、私はもう一度試してみましたが、何もしません。 –

0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else

if ... else文を複数入れてelse if節を作成することができます。 JavaScriptにはelseif(1つの単語で)キーワードはありません。

if (condition1) 
    statement1 
else if (condition2) 
    statement2 
else if (condition3) 
    statement3 
... 
else 
    statementN 

これがどのように動作するかを確認するには、このネストが適切にインデントされた場合、それは次のようになります方法です:

if (condition1) 
    statement1 
else 
    if (condition2) 
     statement2 
    else 
     if (condition3) 
... 

個人的に私はこれとは全く異なるアプローチをしようとするだろう - https://jsfiddle.net/denov/9awt48bo/4/

+0

私はあなたの助言に従おうとしましたが、役に立たないのです –

+0

私のフィドルをチェックしてください。 – denov

+0

それは間違いなく動作しますが、私にとっては現在のところ複雑すぎる解決策です。私はあなたにエレガントなソリューションを提案していただき、ありがとうございます –