1

我确定我只是以某种方式搞砸了我的代码(仍然有点菜鸟),但我正在尝试创建一个随机数(工作正常)然后使用该随机数中的变量发送每个3 个用户参加课后调查(根本无法正常工作)。

有没有办法做到这一点,如果是这样,我做错了什么?

这是代码(这是在 adobe Captivate 课程中,所以我也在使用 API 接口库,但那部分也可以正常工作)。

当前,此代码字符串每次都将用户发送到列出的链接,而不是依赖于变量。

var jsRandomNumber = 0

function getRandomInt(min, max) {
  var jsRandomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
  alert(jsRandomNumber);
  window.cpAPIInterface.setVariableValue('randomnumber', jsRandomNumber);
}

getRandomInt (1, 3)

function randomQuizGenerator() {
    if (var jsRandomNumber = 1) {
      window.open("http://www.w3schools.com");
      window.cpAPIInterface.next();
    } else {
      window.cpAPIInterface.next();
    }
}

randomQuizGenerator()
4

3 回答 3

2

根据您的代码,我看到三个问题,其中两个是对变量的误解,第三个是对条件的误解。

首先,您只需要var jsRandomNumber在顶部声明一次变量。然后,您只需使用其名称即可访问它,jsRandomNumber. 每隔一次你把它放在var它前面,你就是在那个范围内创建一个新变量。

对于if语句,再次使用jsRandomNumber而不是var jsRandomNumber,但您还需要使用==来比较两个值。UsingjsRandomNumber = 1将设置jsRandomNumber为 1,然后该值用于确定 是否if应该通过,在这种情况下它总是会因为 1 碰巧评估为truejsRandomNumber == 1将返回truefalse取决于 的值jsRandomNumber

var jsRandomNumber = 0

function getRandomInt(min, max) {
  jsRandomNumber = Math.floor(Math.random() * (max - min + 1)) + min;
  alert(jsRandomNumber);
  window.cpAPIInterface.setVariableValue('randomnumber', jsRandomNumber);
}

getRandomInt (1, 3)

function randomQuizGenerator() {
    if (jsRandomNumber == 1) {
      window.open("http://www.w3schools.com");
      window.cpAPIInterface.next();
    } else {
      window.cpAPIInterface.next();
    }
}

randomQuizGenerator()
于 2016-08-17T18:19:50.163 回答
1

您可以进行一些小修复来解决您的问题。

  1. 不要jsRandomNumber多次声明。每次使用 时var,都会重新声明该变量,因此它的值会在整个脚本中发生变化。
  2. 无需更新全局变量,只需将该jsRandomNumber变量设为getRandomInt函数的本地变量即可。您可以返回它并使用返回值。局部变量在这里更有意义,因为您只需要在一个地方更改该数字。如果您将变量保留在全局范围内,则getRandomInt函数外部的代码将能够访问和更改该变量。它使调试问题变得更加困难。
  3. 比较两个值时,使用==or ===。使用=将不起作用,因为单个等号是赋值运算符。

这是一个更新的示例:

function getRandomInt(min, max) {
  var jsRandomNumber = Math.floor(Math.random() * (max - min + 1)) + min; // only declare the variable once
  alert(jsRandomNumber);
  window.cpAPIInterface.setVariableValue('randomnumber', jsRandomNumber);
  return jsRandomNumber; // Return the variable, instead of changing a global variable
}

function randomQuizGenerator() {
    var myNumber = getRandomInt (1, 3); // using return value, not global variable
    if (myNumber === 1) { // triple equals sign for checking equality
      window.open("http://www.w3schools.com");
      window.cpAPIInterface.next();
    } else {
      window.cpAPIInterface.next();
    }
}

randomQuizGenerator()
于 2016-08-17T18:24:10.507 回答
0

首先,没有必要重新声明jsRandomNumbervar主要用于第一次声明一个变量。因此,您可以删除var多次发生的无关的 's。

其次,在比较if语句中的值时,您需要使用==运算符。一个=是赋值运算符,也将返回您设置的值。例如,if(a=1)将始终评估为 true,因为它的设置a等于 1,然后返回 1。查看此处了解更多信息。因此,您应该将 if 语句更改为:

 if(jsRandomNumber == 1) {

      ....

 }
于 2016-08-17T18:20:17.393 回答