功能不正确

时间:2014-02-26 19:00:01

标签: javascript

嗨我这里有这个功能(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();

1 个答案:

答案 0 :(得分:0)

检索handmatigeTemp时,它是一个字符串。 toFixed()函数将返回temperatureuur的字符串表示。

比较两个字符串时,Javascript不会转换任何类型。因此,您要按字母顺序比较这两个值。

要解决此问题,只需删除“toFixed()”调用即可。 Javascript会将handmatigeTemp转换为数字并正确执行比较。

handmatigeTemp < temperatuur

Here is a jsfiddle to illustrate my point.