是否可以使用 javascript 在条件语句中将某人发送到网站?

Is it possible to send someone to a website in a conditional statement using javascript?

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

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

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

目前,这串代码每次都会将用户发送到列出的 link,而不是依赖于变量。

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()

根据你的代码,我发现了三个问题,其中两个是对变量的误解,第三个是对条件的误解。

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

对于if语句,再次使用jsRandomNumber代替var jsRandomNumber,但您还需要使用==来比较两个值。使用 jsRandomNumber = 1 会将 jsRandomNumber 设置为 1,然后该值用于确定 if 是否应该通过,在这种情况下它总是会因为 1 恰好评估为 truejsRandomNumber == 1 将 return 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()

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

其次,比较if语句中的值时,需要使用==运算符。单个 = 是赋值运算符,也会 return 您设置的值。因此,例如,if(a=1) 将始终计算为真,因为它的设置 a 等于 1,然后 returning 1。查看 here 了解更多信息。因此,您应该将 if 语句更改为:

 if(jsRandomNumber == 1) {

      ....

 }

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

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

这是一个更新的例子:

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()