Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript onclick按钮生成随机算术问题表_Javascript_Math_Button_Random_Onclick - Fatal编程技术网

javascript onclick按钮生成随机算术问题表

javascript onclick按钮生成随机算术问题表,javascript,math,button,random,onclick,Javascript,Math,Button,Random,Onclick,我是一个javascript新手。我一直在努力完成这项作业,但就是看不出我的错误在哪里,而且要在午夜前完成。任何帮助都将不胜感激!以下是说明: 创建一个网页,该网页以一个按钮开始,该按钮重定向到完成的表。 生成的表是一个3 X 4的表,每个单元格都填充了一道数学题。 数学题将使用1到20之间的随机数。 这些问题将使用四种运算之一:加法、减法、, 乘法或除法,也是随机产生的。我必须使用以下功能: 函数buildIt() 函数构建表(行、列) 函数randOne() 函数randTwo() !DOC

我是一个javascript新手。我一直在努力完成这项作业,但就是看不出我的错误在哪里,而且要在午夜前完成。任何帮助都将不胜感激!以下是说明:

创建一个网页,该网页以一个按钮开始,该按钮重定向到完成的表。 生成的表是一个3 X 4的表,每个单元格都填充了一道数学题。 数学题将使用1到20之间的随机数。 这些问题将使用四种运算之一:加法、减法、, 乘法或除法,也是随机产生的。我必须使用以下功能:

函数buildIt()

函数构建表(行、列)

函数randOne()

函数randTwo()

!DOCTYPE html PUBLIC“-//W3C//DTD XHTML1.0//EN”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
随机数学表生成器
函数buildIt()
{
//函数调用buildTable设置表中//行和列的值
var行;var列;var i;var j;
构建表(行、列);
}
函数构建表(行、列)
{ 
//函数来构建实际表
//包括在其中调用下两个函数的for循环
文件。写(“

”); 文件。填写(“”); ranNum=(行+1)*(列+1); 对于(i=0;i
以下不是答案,而是一些将帮助您完成此任务和未来任务的提示

  • 使用document.createElement而不是document.write。
    HTML对象比仅仅将文本打印到屏幕上并希望得到最好的结果更容易管理。
    即:
    var table=document.createElement('table')
    document.body.appendChild(表)
  • 使用CSS而不是HTML属性进行样式设置。
    table.style.width=“60%”
    table.style.border=“1px纯黑色”
  • 要为变量指定新值,无需重新声明。
    var randNumOne=Math.floor(Math.random()*21);
    randNumOne=Math.floor(Math.random()*21)
另一个重要概念是范围界定 在{}内编写代码时,将创建一个新的代码块。
每个代码块都有自己的作用域。
在{}块之外编写的代码被放入全局范围。
如果在块1中声明变量,然后调用块1中未声明的函数。该变量在函数中不可访问

var test = 'outside';
function block1() {
  var test = 'inside block 1';
  var block3 = function() {
    alert(test);
  }
  block3(); // Will output inside block 1.
  block2(); // Will output outside.
}
function block2() {
  alert(test);
}
block1();
代码中还存在各种语法错误@tieson-t已经提到了,但是你可以在Chrome、Firefox、Safari甚至IE中使用开发者工具

浏览一下您的代码,我可以看到以下错误:
*使用未定义的变量(行、列、随机数…)
*首先,让我们对代码应用标准缩进模式(许多编辑器都会为您这样做)和一些格式设置:

function buildIt() {
    //function to call buildTable setting the values for the //rows and columns the table
    var rows; var cols; var i; var j; 
    buildTable(rows, cols);
}

function buildTable(rows, cols) { 
    //function to build actual table
    //include for loop in which next two functions are called
    document.write("<div id='content'><p>&nbsp;</p>");
    document.write("<table width='60%' border='1' align='center' " + 
                   "cellpadding='5' cellspacing='5'>");
    ranNum = (rows + 1) * (cols + 1);
    for (i = 0; i < rows; i++) {
        document.write("<tr>");
        for (j = 0; j < cols; j++) {
            document.write("</tr>");
        }
        document.write("</table> </div>");
    }

    function randOne(min, max) {
        //function to generate random number between 1 and 20
        var randNumOne = return Math.floor(Math.random() * 21);
        var randNumTwo = return Math.floor(Math.random() * 21);
    }

    function randTwo() {
        //function to generate the specified operations randomly
        var cellContents;
        switch(randOp) {
          case "+": answerNumb = randNumOne + randNumTwo; break;
          case "-": answerNumb = randNumOne - randNumTwo; break;
          case "÷": answerNumb = randNumOne / randNumTwo; break;
          case "x": answerNumb = randNumOne * randNumTwo; break;
        }
        cellContents = randNumOne + operation + randNumTwo;
    }
}
但是,尽管
resultValue
将包含正确的值,但它只是留在
cosine
中。为了再次获取值,我们通常
返回
某些内容:

function cosine(x) {
    var resultValue = Math.cos(x);
    return resultValue;
}
因此,我希望您的代码结构更像这样:

function cosine(x) {
    var resultValue = Math.cos(x);
}
function buildIt() {
    var rows = 3;
    var cols = 4;
    document.getElementById('gridDiv').innerHTML = buildTable(rows, cols);
}
在这里,buildIt调用buildTable,并将结果传递给id为gridDiv的某个div的innerHTML属性。然后buildTable可以只关心构建一个HTML字符串,而不负责将其放在何处

因为buildTable只是生成一个字符串,所以我会让randOne返回一个数字,而randTwo返回一个字符串:

function randOne() {
    //function to generate random number between 1 and 20
    return Math.floor(Math.random() * 21);
}
请注意,
return
是函数中执行的最后一条语句;语句是
returnsomevalue
,然后它停止处理函数

因此,将字符串从单个随机数构建为包含数学语句的字符串,再构建为整个html表;在行和列之间循环创建单元格,然后创建行,然后创建整个表,并将其传递回正确的位置进行设置


我的建议是使用jsbin.com或jsfiddle.com来编写它,首先让最小的函数按照您想要的方式工作。例如,在其中一个站点中打开控制台(它只是一个交互式javascript窗口),粘贴到上面的randOne定义中,然后通过键入randOne()调用它

在大多数浏览器中,F12键通常会打开开发者控制台。从这里开始,谢谢你的帮助!我再看一遍代码。我打算扔掉我的课本,买一本Javascript的权威指南。希望随着时间和使用,我最终会得到它,但当事情不容易发生时,它肯定会令人沮丧。在你去扔书和买新书之前,我推荐你。我使用在线Lint在第42行找到语法错误,但我会尝试开发工具。@Eyal:不是w3schools!这是非常基本的,不是最新的。使用Mozilla开发者网络:谢谢分享!我一定会看看你提到的网站。我重新编写了代码,使函数现在可以工作。我应该编辑线程。我意识到我的第一个错误是没有结束我的评论。一些我忽略的简单的事情。
function randOne() {
    //function to generate random number between 1 and 20
    return Math.floor(Math.random() * 21);
}