当我按下按钮并输入值2时,如果命令则不执行其他操作

时间:2016-03-11 23:24:12

标签: javascript html if-statement

首先,我想道歉,因为下面的代码是用丹麦语写的,可能对非丹麦人没有任何意义。

我写了这段代码:

JS Link

代码的重要部分是这个,但我不确定这是否是问题所在:

function udregnAnalyseAr() {
        var virksomhedsnavn = prompt("Hvad hedder den virksomhed du arbejder med?");
        var analysear;
        var ar = parseFloat(prompt("Hvor mange analyseår er der?"));

以后再下来:

if (ar === 1.00) {
        var afkastningsgrad1 = parseFloat(prompt("Hvad er afkastningsgraden på i det første år? (Det mindste år)")); 
        if (afkastningsgrad1 <= 4.00)
        {
        value1 = "Afkastningsgraden i år 1 er blevet registreret til " + afkastningsgrad1 + " %. Den er på et utilfredsstillende niveau sammenlignet med markedsrenten på 3 % plus et risikotillæg (marts 2016). <br>";
        }
        else if (afkastningsgrad1 > 4.00)
        {value1 = "Afkastningsgraden i år 1 er blevet registreret til " + afkastningsgrad1 + " %. Den er på et tilfredsstillende niveau sammenlignet med markedsrenten på 3 % plus et risikotillæg (marts 2016). <br>";
        }
        else
        {value1 = "Afkastningsgraden er blevet indtastet forkert.<br>";
        }
        document.getElementById("afkastningDataTxt").innerHTML = value1
        }

    else if (ar === 2) {
        var afkastningsgrad1 = parseFloat(prompt ("Hvad er afkastningsgraden på i det første år? (Det mindste år)")); 
        if (afkastningsgrad1 <= 4.00)
        {
        value1 = "Afkastningsgraden i år 1 er blevet registreret til " + afkastningsgrad1 + " %. Den er på et utilfredsstillende niveau sammenlignet med markedsrenten på 3 % plus et risikotillæg (marts 2016). <br>";
        }
        else if (afkastningsgrad1 > 4.00)
        {value1 = "Afkastningsgraden i år 1 er blevet registreret til " + afkastningsgrad1 + " %. Den er på et tilfredsstillende niveau sammenlignet med markedsrenten på 3 % plus et risikotillæg (marts 2016). <br>";
        }
        else
        {value1 = "Afkastningsgraden er blevet indtastet forkert.<br>";
        }

我的问题是,当我在第一个函数中将“ar”定义为2时,它并不关心我的第二个函数中的值。它会自动充当ar = 1并启动if执行。

3 个答案:

答案 0 :(得分:1)

问题是你在if语句中使用了一个等号。你想要使用三个而不是。这可以确保值和类型彼此相等。

例如:

if (ar === 1.00)

答案 1 :(得分:1)

问题在于变量范围。 ar仅存在于您的第一个函数中,因此在另一个函数中始终为undefined

要修复它,要么通过在函数外部定义它来更改变量的范围(或省略var,这肯定会使它成为全局变量,而不是像在父函数中那样) ,或弄清楚如何将它传递给你的第二个功能。

答案 2 :(得分:0)

您应该将“ar”声明为: ar = parseFloat(提示(“Hvor mangeanalyseårerder?”)); 而不是声明为: var ar = parseFloat(prompt(“Hvor mangeanalyseårerder?”));

原因是你必须在第二个函数中访问ar的值,而使用“var”声明一个变量使得它在其范围外是本地的和不可访问的。虽然声明没有“var”的变量会使它变为全局变量。

您可以尝试的另一件事是在调用它时在第二个函数中传递变量。这样,您不必全局声明变量“ar”。

所以它应该是这样的:

在HTML中:

<button onClick="udregnAnalyseAr()">Rentabilitet</button>

在JavaScript中

function udregnAnalyseAr() {
//implementation of function
var ar =  parseFloat(prompt("Hvor mange analyseår er der?"));
afkastningData(ar);// call the other function here instead of calling it from html itself.
}
function ;afkastningData(ar){
//implementation of function
}