2014-02-26 150 views
-1

嗨我有這個功能(zetTemperatuur)應該將標準溫度更改爲所需的溫度(它應該是一個winecooler模擬器)。該功能工作正常,如果我設置所需的溫度在1.0和9.9度之間,但只要我把所需的溫度10.0度和以上,功能不起作用。函數功能不正確

var temperatuur = 7.2; 

function openDedeur() { 
    temperatuur = temperatuur + 0.9; 
    document.getElementById("huidigetemperatuur").value = temperatuur.toFixed(1); 
    console.log("U hebt de wijnkoeler geopend, de temperatuur stijgt nu met 0.9º."); 
} 

function countDown() { 
    setInterval(function() { 
     temperatuur = temperatuur - 0.2; 
     document.getElementById("huidigetemperatuur").value = temperatuur.toFixed(1); 
    }, 300000); 
} 

function trekAf() { 
    temperatuur = temperatuur - 0.1; 
    console.log("De huidige temperatuur is " + temperatuur.toFixed(1)); 
    document.getElementById("huidigetemperatuur").value = temperatuur.toFixed(1); 
} 

function telOp() { 
    temperatuur = temperatuur + 0.1; 
    console.log("De huidige temperatuur is " + temperatuur.toFixed(1)); 
    document.getElementById("huidigetemperatuur").value = temperatuur.toFixed(1); 
} 

function zetTemperatuur() { 
    var handmatigeTemp = document.getElementById("gewenstetemperatuur").value; 
    var flag = false; 

    var myInterval = setInterval(function() { 
     if (handmatigeTemp < temperatuur.toFixed(1)) { 
      if (flag == false) { 
       flag = true; 
       console.log("De motor van de wijnkoeler begint te draaien en zal geleidelijk aan dalen naar de gewenste temperatuur."); 
      } 
      trekAf(); 
     } else if (handmatigeTemp > temperatuur.toFixed(1)) { 
      if (flag == false) { 
       flag = true; 
       console.log("De motor van de wijnkoeler begint te draaien en zal geleidelijk aan stijgen naar de gewenste temperatuur."); 
      } 
      telOp(); 
     } else if (handmatigeTemp == temperatuur.toFixed(1)) { 
      console.log("Uw Wijnkoeler is op de gewenste temperatuur, namelijk " + temperatuur.toFixed(1) + ". De wijnkoeler zal nu uitschakelen om energie te besparen."); 
      clearInterval(myInterval); 
     } else { 
      clearInterval(myInterval); 
     } 
    }, 30); 
} 

countDown(); 
+3

什麼 「不工作」?它做什麼,你期望它做什麼?一個['jsFiddle'](http://jsfiddle.net/)將幫助 – Xotic750

+0

函數zetTemperatuur不起作用。當你想要的溫度低於標準時,它應該倒計時,如果期望的溫度更高,它應該計數 – user3341530

+0

'countUp()'在哪裏? – brouxhaha

回答

0

當您檢索handmatigeTemp時,它是一個字符串。 toFixed()函數將返回temperatuur的字符串表示形式。

比較兩個字符串時,Javascript不轉換任何類型。所以,你是按字母順序比較這兩個值。

要解決此問題,只需刪除「toFixed()」調用。 Javascript會將handmatigeTemp轉換爲數字並正確執行比較。

handmatigeTemp < temperatuur 

Here is a jsfiddle to illustrate my point.