Javascript 如何通过几个函数计算一个简单的方程?(DOM)

Javascript 如何通过几个函数计算一个简单的方程?(DOM),javascript,dom,Javascript,Dom,嘿,伙计们,我正在做一个小项目,我必须随机生成2个数字和运算符。然后我必须将这个方程的结果存储在一个包含3个随机生成的数字的数组中。之后,所有这些结果都将显示在按钮上,用户可以通过单击正确答案进行选择 我已经到了生成数字和运算符的地步,但是我得到正确结果并生成其他三个随机结果的代码似乎不起作用。有人知道怎么修吗?提前谢谢你 <div id="count"> <div id="text">

嘿,伙计们,我正在做一个小项目,我必须随机生成2个数字和运算符。然后我必须将这个方程的结果存储在一个包含3个随机生成的数字的数组中。之后,所有这些结果都将显示在按钮上,用户可以通过单击正确答案进行选择

我已经到了生成数字和运算符的地步,但是我得到正确结果并生成其他三个随机结果的代码似乎不起作用。有人知道怎么修吗?提前谢谢你

<div id="count">
            <div id="text">                  
            </div>
</div>


<script>

        window.addEventListener('load', function() {

            var rnum1 = generateRandomNumber1 ();
            var rnum2 = generateRandomNumber2 ();
            var randomOperator = generateRandomOperatorAndCorrectResult ();




    document.querySelector("#text").textContent = "How much is " + rnum1  + randomOperator  +  rnum2 + "?"; 
    });


       function generateRandomOperatorAndCorrectResult () {
            var operators = [{
                sign: "+",
                method: function(rnum1,rnum2){ return rnum1 + rnum2; } },
                {
                 sign: "*",
                 method: function(rnum1,rnum2){ return rnum1 * rnum2; } },
                 {
                 sign: "-",
                method: function(rnum1,rnum2){ return rnum1 - rnum2; }
                  }];
            var results = [];

            var selectedOperator = Math.floor(Math.random()*operators.length);
            var randomOperator = operators[selectedOperator].sign;
            var correctResult = (operators[selectedOperator].method); //til this point it works
            results.push(correctResult);
            return randomOperator;
            return results;
               }

        function generateRandomResults () {
            for(var i=0; i < 4; i++) {
                results.push((Math.floor(Math.random() * 400) + 1))}

            return results;

        }   
           function generateRandomNumber1 () {
              var rnum1 = (Math.floor(Math.random() * 20) + 1);
              return rnum1;}


            function generateRandomNumber2 () {
              var rnum2 = (Math.floor(Math.random() * 20) + 1);
              return rnum2;}     

</script>

addEventListener('load',function()){
var rnum1=generateRandomNumber1();
var rnum2=generateRandomNumber2();
var randomOperator=GeneratorAndCorrectResult();
document.querySelector(“#text”).textContent=“多少是”+rnum1+randomOperator+rnum2+”;
});
函数生成器DomainOperator和CorrectResult(){
var运算符=[{
符号:“+”,
方法:函数(rnum1,rnum2){return rnum1+rnum2;},
{
符号:“*”,
方法:函数(rnum1,rnum2){return rnum1*rnum2;},
{
符号:“-”,
方法:函数(rnum1,rnum2){返回rnum1-rnum2;}
}];
var结果=[];
var selectedOperator=Math.floor(Math.random()*operators.length);
var randomOperator=运算符[selectedOperator]。符号;
var correctResult=(运算符[selectedOperator].method);//直到此时为止
结果。推送(纠正结果);
返回随机算子;
返回结果;
}
函数生成器域结果(){
对于(变量i=0;i<4;i++){
results.push((Math.floor(Math.random()*400)+1)))
返回结果;
}   
函数生成器DomainNumber1(){
var rnum1=(Math.floor(Math.random()*20)+1);
返回rnum1;}
函数生成器DomainNumber2(){
var rnum2=(Math.floor(Math.random()*20)+1);
返回rnum2;}

我认为您需要像这样传递一些参数。方法(5,2)。方法(rnum1、rnum2)

。 .


方法
generaterandomoperator和correctResult
从未调用该方法

var correctResult=(运算符[selectedOperator].method)正在将方法函数分配给correctResult变量。在JavaScript中,函数是对象。所以correctResult是function类型的对象。您需要在该行的变量赋值之后调用函数

您可以执行
correctResult(rnum1,rnum2)
运算符[selectedOperator]。方法(rnum1,rnum2)
但是,您无权访问上述调用中的rnum1和rnum2。您可以将rnum1、rnum2作为全局变量来实现这一点。(尽管我不这么认为)。您可以将rnum1和rnum2作为参数传递给
generaterandomoperator和correctResult
函数中的
结果
数组也是如此。你也可以通过。它们将作为引用传递,就像数组在JavaScript中通过引用传递一样,因此您在函数中所做的任何操作都将反映在本地范围之外


除了在
generaterandomoperator和correctResult
方法中之外,我在任何地方都看不到创建的结果。如果您在另一个地方创建了它作为全局变量,那么它可能存在。但是从提供的代码来看,每个方法中的results变量似乎是断开连接的。

不能使用两个
return
语句返回两个值。第一个结束函数。要获得复合结果,需要另一个数组或对象。
  var rnum1 = generateRandomNumber1 ();
  var rnum2 = generateRandomNumber2 ();
  //pass the random numbers to the function
  var data= generateRandomOperatorAndCorrectResult(rnum1,rnum2);
  //data=["+", [5]]
  var operator=data[0];
  var result= data[1];
   function generateRandomOperatorAndCorrectResult (num1, num2) {
        var operators = [{
            sign: "+",
            method: function(rnum1,rnum2){ return rnum1 + rnum2; } },
            {
             sign: "*",
             method: function(rnum1,rnum2){ return rnum1 * rnum2; } },
             {
             sign: "-",
            method: function(rnum1,rnum2){ return rnum1 - rnum2; }
              }];
        var results = [];

        var selectedOperator = 
        Math.floor(Math.random()*operators.length);
        var randomOperator = operators[selectedOperator].sign;
        var correctResult = (operators[selectedOperator].method(num1, num2)); //pass the numbers to the methods
        results.push(correctResult);

        //return multiple values
        return [randomOperator,results];
           }