我将如何显示从javascript到html页面的随机数学问题,但生成的数字并不仅仅显示符号

我将如何显示从javascript到html页面的随机数学问题,但生成的数字并不仅仅显示符号,javascript,Javascript,我正在尝试为孩子们创建一个数学游戏,让玩家说出他的名字,让玩家选择他正在玩的级别,我将如何将随机数学问题从javascript显示到html页面,但生成的数字不仅仅显示符号,这是我的脚本,我将它链接到html外部。 这是我的密码: var pageName = location.pathname.split("/").slice(-1); window.addEventListener('load', function () { alert(pageName); randomOpr();

我正在尝试为孩子们创建一个数学游戏,让玩家说出他的名字,让玩家选择他正在玩的级别,我将如何将随机数学问题从javascript显示到html页面,但生成的数字不仅仅显示符号,这是我的脚本,我将它链接到html外部。 这是我的密码:

var pageName = location.pathname.split("/").slice(-1);
window.addEventListener('load', function () {
  alert(pageName);
  randomOpr();
  pageAction();
});
var num1 = document.getElementById("num1");
var num2 = document.getElementById("num2");
function pageAction() {
  if (pageName == "level1.html") {
    num1.innerHTML = Math.floor(Math.random() * 20 + 1);
    num2.innerHTML = Math.floor(Math.random() * 20 + 1);
  } else if (pageName == "level2.html") {
    num1.innerHTML = Math.floor(Math.random() * 30 + 21);
    num2.innerHTML = Math.floor(Math.random() * 30 + 21);
  } else if (pageName == "level3.html") {
    num1.innerHTML = Math.floor(Math.random() * 50 + 51);
    num2.innerHTML = Math.floor(Math.random() * 50 + 51);
  }
}
var operators = ['+', '-', '*', '/']
var selectedOperator = Math.floor(Math.random() * operators.length);

function randomOpr() {
  var operator = document.getElementById("opr");
  alert((operator).value);
  operator.innerHTML = operators[selectedOperator];
}

function checkMath() {
  var num1 = parseInt(document.getElementById("num1").innerHTML, 10);
  var num2 = parseInt(document.getElementById("num2").innerHTML, 10);
  var answer = parseInt(document.getElementById("answer").value, 10);
  if (operators[selectedOperator] == "+") {
    if (answer === num1 + num2) {
      alert("your answer is correct");
    } else {
      alert(answer + " is incorrect, correct answer is " + (num1 + num2));
    }
  } else if (operators[selectedOperator].sign == "-") {
    if (answer === num1 - num2) {
      alert("your answer is correct");
    } else {
      alert(answer + " is incorrect, correct answer is " + (num1 - num2));
    }
  } else if (operators[selectedOperator].sign == "*") {
    if (answer === num1 - num2) {
      alert("your answer is correct");
    } else {
      alert(answer + " is incorrect, correct answer is " + (num1 * num2));
    }
  } else if (operators[selectedOperator].sign == "/") {
    if (answer === num1 - num2) {
      alert("your answer is correct");
    } else {
      alert(answer + " is incorrect, correct answer is " + (num1 / num2));
    }
  }
  document.getElementById("answer").value = "";
  randomNum();
}

按照注释中的建议清理代码

不需要第二次得到问题中的数字,在生成时已经有了这些数字

无需为每个操作员重复回答检查和警报代码

什么是“登录”运算符[selectedOperator]。在四项检查中的三项中“登录”?-删除

什么是随机数删除

我还要检查除法问题的值

<body>

    <div id="num1"></div>
    <div id="opr"></div>
    <div id="num2"></div>
    <div>
        <input type=text id="answer">
    </div>
    <button id="btnAnswer">Check answer</button>

    <script>
        $(function () {
            $("#btnAnswer").click(checkMath)
        });

        // Set up re-usable variables first.
        var pageName = location.pathname.split("/").slice(-1);
        var operators = ['+', '-', '*', '/']
        var num1 = document.getElementById("num1");
        var num2 = document.getElementById("num2");
        var answerInput = document.getElementById("answer");
        var operator = document.getElementById("opr");
        // The values of the numbers to use in the question, current Operator, and calculated answer.
        var leftNumber = 0;
        var rightNumber = 0;
        var selectedOperator = "";
        var answer = 0;


        window.addEventListener('load', function () {
            alert(pageName);
            pageAction();
        });

        function pageAction() {
            // Use a switch to perform the check on the level, then set the multiplier.
            var multiplier = 0;

            switch (pageName) {
                case "level1.html":
                    multiplier = 20;
                    break;
                case "level2.html":
                    multiplier = 30;
                    break;
                case "level3.html":
                    multiplier = 50;
                    break;
                default:
                    multiplier = 20;
                    break;
            }

            // Generate the numbers, set them on the page, and get a random Operator.
            leftNumber = Math.floor(Math.random() * multiplier + 1);
            rightNumber = Math.floor(Math.random() * multiplier + 1);
            num1.innerText = leftNumber;
            num2.innerText = rightNumber;
            answerInput.value = "";
            randomOpr();

            // Calculate the answer for later use.
            switch (selectedOperator) {
                case "+":
                    answer = leftNumber + rightNumber;
                    break;
                case "-":
                    answer = leftNumber - rightNumber;
                    break;
                case "*":
                    answer = leftNumber * rightNumber;
                    break;
                case "/":
                    answer = leftNumber / rightNumber;
                    break;
                default:
                    answer = leftNumber + rightNumber;
                    break;
            }
        }


        function randomOpr() {
            // Set the current Operator, update the page control.
            selectedOperator = operators[Math.floor(Math.random() * operators.length)];
            operator.innerText = selectedOperator;
            alert((operator).innerText);
        }

        function checkMath() {
            // Check submitted answer against the calculated one, then re-run for another question.
            var submittedAnswer = parseInt(answerInput.value, 10);

            if (submittedAnswer === answer) {
                alert("your answer is correct");
            } else {
                alert(submittedAnswer + " is incorrect, correct answer is " + answer);
            }
            pageAction();
        }

    </script>

</body>

添加html代码页面名是否正确匹配?添加简单的调试,并发现如果num1和num2都等于1并且是的字符串,那么num1+num2可能返回11而不是2example@pokeybitOP正在使用parseInt.FYI-除非字符串中包含HTML,否则不要使用.innerHTML,否则请使用.textContent,或者,如果要设置/获取表单字段的值,请使用.value。还有,为什么是20+1、30+21和50+51,而不仅仅是21、51和101?