是否可以使用 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 恰好评估为 true
。 jsRandomNumber == 1
将 return true
或 false
取决于 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()
首先,不需要重新声明jsRandomNumber
。 var
主要用于第一次声明一个变量。因此,您可以删除多次发生的无关 var
。
其次,比较if
语句中的值时,需要使用==
运算符。单个 =
是赋值运算符,也会 return 您设置的值。因此,例如,if(a=1)
将始终计算为真,因为它的设置 a
等于 1,然后 returning 1。查看 here 了解更多信息。因此,您应该将 if 语句更改为:
if(jsRandomNumber == 1) {
....
}
您可以进行一些小修复来解决您的问题。
- 不要多次声明
jsRandomNumber
。每次使用 var
时,您都会重新声明该变量,因此它的值在整个脚本中都会发生变化。
- 不是更新全局变量,而是将
jsRandomNumber
变量设为 getRandomInt
函数的局部变量。您可以 return 它并使用 return 值。局部变量在这里更有意义,因为您只需要在一个地方更改该数字。如果将变量保留在全局范围内,则 getRandomInt
函数之外的代码将能够访问和更改该变量。这使得调试问题变得更加困难。
- 比较两个值时,使用
==
或===
。使用 =
不起作用,因为单个等号是 赋值 运算符。
这是一个更新的例子:
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()
我确定我只是以某种方式搞砸了我的代码(仍然有点菜鸟)但我正在尝试创建一个随机数(它工作正常)然后使用该随机数中的变量将每 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 恰好评估为 true
。 jsRandomNumber == 1
将 return true
或 false
取决于 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()
首先,不需要重新声明jsRandomNumber
。 var
主要用于第一次声明一个变量。因此,您可以删除多次发生的无关 var
。
其次,比较if
语句中的值时,需要使用==
运算符。单个 =
是赋值运算符,也会 return 您设置的值。因此,例如,if(a=1)
将始终计算为真,因为它的设置 a
等于 1,然后 returning 1。查看 here 了解更多信息。因此,您应该将 if 语句更改为:
if(jsRandomNumber == 1) {
....
}
您可以进行一些小修复来解决您的问题。
- 不要多次声明
jsRandomNumber
。每次使用var
时,您都会重新声明该变量,因此它的值在整个脚本中都会发生变化。 - 不是更新全局变量,而是将
jsRandomNumber
变量设为getRandomInt
函数的局部变量。您可以 return 它并使用 return 值。局部变量在这里更有意义,因为您只需要在一个地方更改该数字。如果将变量保留在全局范围内,则getRandomInt
函数之外的代码将能够访问和更改该变量。这使得调试问题变得更加困难。 - 比较两个值时,使用
==
或===
。使用=
不起作用,因为单个等号是 赋值 运算符。
这是一个更新的例子:
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()