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