【问题标题】:Putting functions in an array based on a condition (if checkbox is checked)根据条件将函数放入数组中(如果选中复选框)
【发布时间】:2015-03-27 02:13:59
【问题描述】:

我仍在研究我的数学游戏。它现在生成随机加法、减法、乘法和除法问题。我所做的是为每种类型的数学运算创建函数并将其放入一个数组中,然后我有另一个函数从该数组中随机获取一个。它有效! (如果问题没有出现,请点击“返回选项”按钮,然后再次点击“点击播放”按钮) Click here to see it.

//function definitions (See line 116 of jsFiddle link)
var operatorFunctions = [additionQuest,
           subtractionQuest,
           multiplicationQuest,
           divisionQuest];

//Array randomizer
function randomFrom(array) {return array[Math.floor(Math.random() * array.length)];}
function randomOp() {
    var func = randomFrom(operatorFunctions);
    (func)();
}

但现在我想让用户根据他们在开始屏幕上选择的内容来选择他们想要练习的问题(运算符)。 我的想法是,如果复选框被选中,那么其对应的函数将被推入 operatorFunctions 数组中。

var operatorFunctions = []
// Code below is wrapped in a function that is executed on start button click
if ($('#allowAddition').is(':checked')) {
allowAdd = true;
} else {
allowAdd = false;
}

if (allowAdd == true) {
    operatorFunctions.push(additionQuest);
    return operatorFunctions;
}

但这根本不起作用! See it here你们看到我的逻辑有什么明显的缺陷吗?我觉得这是一个范围的事情......?

另外,我的 DivisionQuest 函数不是 100% 正确的,有时第一个问题没有初始化。此外,似乎我不应该重复地提出相同的问题。 (在第 49 行的第一个 jsFiddle 上将数组中的其他运算符函数注释掉,以查看这些问题。) 大家觉得这个功能有什么问题吗?

function divisionQuest() {
    var self = this;
var $numberOne = getRandomInt(0,rangeMax);
var $numberTwo = getRandomInt(1,rangeMax); //Divisor cannot be zero

 //This makes sure the a function produces a question whose answer is a whole number
while ($numberOne % $numberTwo != 0) {
    $numberOne = getRandomInt(0,rangeMax);
    $numberTwo = getRandomInt(1,rangeMax)
    return $numberOne, $numberTwo;
}

self.quest = $numberOne / $numberTwo;
self.formatquest = $numberOne + " ÷ " + $numberTwo; //Tidy it up a bit
$questionHolder.html(self.formatquest);
$questionHolder.hide().fadeIn(600);
}

【问题讨论】:

  • Durrr... 我意识到我的 divisionQuest 函数出了什么问题... while 循环的最后一行是完全没有必要的,是导致问题的原因。

标签: javascript jquery arrays random division


【解决方案1】:

试试这个:http://jsfiddle.net/rezashamdani/nz2cqja8/

<input type="checkbox" name="chooseOp" id="allowAddition" value="+" />Addition 中的 id 错误 和通知行:43、65-97

【讨论】:

  • 嘿,这行得通!非常感谢:D 我还在 backButton 函数中添加了一点,以便在您返回时清除数组。 jsfiddle.net/z61g5b7s/4
猜你喜欢
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
相关资源
最近更新 更多