Javascript 如何将Math.random函数与IF语句关联使用

Javascript 如何将Math.random函数与IF语句关联使用,javascript,html,function,if-statement,Javascript,Html,Function,If Statement,我试图根据一个函数的输出输出不同的消息,该函数使用math.random函数生成一个介于1和4之间的数字 function roll() { return Math.floor(Math.random()*4+1) } 按下按钮时,调用该函数,并将全局变量“a”分配给滚动函数的结果 var a; function buttonPressed() { roll() a = roll() answertq = (x*y); 下面的代码本质上意味着,如果用户在应答框中提供的应答是正确的,则

我试图根据一个函数的输出输出不同的消息,该函数使用math.random函数生成一个介于1和4之间的数字

function roll()
{
return Math.floor(Math.random()*4+1)  
}
按下按钮时,调用该函数,并将全局变量“a”分配给滚动函数的结果

var a;
function buttonPressed() {
roll() 
a = roll() 
answertq = (x*y);
下面的代码本质上意味着,如果用户在应答框中提供的应答是正确的,则根据滚动功能的结果输出不同的消息,如下所示

if (parseInt(document.getElementById("inputVal").value) == answertq) 
{
    if (a=1) 
    {
        window.alert("Very good!");
    }
    else if (a=2)
    {
        window.alert("Excellent!");
    }
    else if (a=3)
    {
        window.alert("Correct, Nice work");
    }
    else if (a=4)
    {
        window.alert("Correct - Keep up the good work");
    }

}
除了当我这样做的时候,我总是得到很好的第一反应!每次问题都是正确的。这意味着roll函数有问题,因为它一直将1赋值给全局变量“a”或其他我没有发现的东西。任何帮助都将不胜感激。我在下面提供了两个问题的截图

[1] 例一 [2] 示例二

您需要比较a==1而不是分配a=1

您需要比较a==1而不是分配a=1

除了当我这样做的时候,我总是得到第一个非常好的回答 好的每次问题都是正确的

原因是您没有比较正在分配的值。==用于比较,=用于赋值

试试这个:

if (a==1) 
    {
        window.alert("Very good!");
    }
    else if (a==2)
    {
        window.alert("Excellent!");
    }
    else if (a==3)
    {
        window.alert("Correct, Nice work");
    }
    else if (a==4)
    {
        window.alert("Correct - Keep up the good work");
    }
除了当我这样做的时候,我总是得到第一个非常好的回答 好的每次问题都是正确的

原因是您没有比较正在分配的值。==用于比较,=用于赋值

试试这个:

if (a==1) 
    {
        window.alert("Very good!");
    }
    else if (a==2)
    {
        window.alert("Excellent!");
    }
    else if (a==3)
    {
        window.alert("Correct, Nice work");
    }
    else if (a==4)
    {
        window.alert("Correct - Keep up the good work");
    }

所有if语句都使用赋值运算符=而不是比较运算符=:

if (parseInt(document.getElementById("inputVal").value) == answertq) {
    if (a==1) {
        window.alert("Very good!");
    }

等等。

所有if语句都使用赋值运算符=而不是比较运算符=:

if (parseInt(document.getElementById("inputVal").value) == answertq) {
    if (a==1) {
        window.alert("Very good!");
    }

等等。

为什么不使用数组来显示消息? 这样,您就可以使用随机数作为数组的索引

var msg = [
    "Very good!",
    "Excellent!",
    "Correct, Nice work",
    "Correct - Keep up the good work"
];

function randomMsg (){
    var random = Math.floor(Math.random() * 4);
    alert(msg[random]);
}

编辑:数组是从零开始的,所以没有+1,为什么不使用数组来处理消息呢? 这样,您就可以使用随机数作为数组的索引

var msg = [
    "Very good!",
    "Excellent!",
    "Correct, Nice work",
    "Correct - Keep up the good work"
];

function randomMsg (){
    var random = Math.floor(Math.random() * 4);
    alert(msg[random]);
}

编辑:数组是零基的,所以没有+1

谢谢您的帮助!它现在工作得很好。我没有意识到两者之间有区别。@Skywhisky:-不客气!另外,请务必阅读有关交换机的信息:-谢谢您的帮助!它现在工作得很好。我没有意识到两者之间有区别。@Skywhisky:-不客气!另请阅读开关:-请了解。另一种方法是将消息存储在数组中,并使用随机索引访问它:var success\u msgs=[正确,您得到了,…]后跟success\u msg[roll]。请了解。另一种方法是将消息存储在数组中,并使用随机索引进行访问:var success_msgs=[正确,您找到了,…]后跟success_msg[roll]。这是一种很好的方法,但我正在努力将其实现到自己的程序中。但是谢谢你的帮助,非常感谢。这是一个很好的方法,但是我正在努力将它应用到我自己的程序中。但是谢谢你的帮助,非常感谢。