是否有可能将某人发送到使用javascript的条件语句的网站
Is it possible to send someone to a website in a conditional statement using javascript?
我确信我只是搞砸了我的代码(仍然有点新手),但我试图创建一个随机数(这是正常的),然后使用该随机数的变量发送每3个用户中的1个到课程后调查(这是不正常的)
是否有办法做到这一点,如果有,我做错了什么?
这是代码(这是一个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()
根据你的代码,我看到了三个问题,其中两个是对变量的误解,第三个是对条件的误解。
首先,您只需要在顶部声明一次变量var jsRandomNumber
。然后,您可以简单地使用它的名称jsRandomNumber
来访问它。每隔一次你把var
放在它前面,你就在那个范围内创建了一个新的变量。
对于if
语句,再次使用jsRandomNumber
而不是var jsRandomNumber
,但是您还需要使用==
来比较两个值。使用jsRandomNumber = 1
将jsRandomNumber
设置为1,然后该值用于确定if
是否应该传递,在这种情况下,它总是会传递,因为1的值恰好是true
。jsRandomNumber == 1
将根据jsRandomNumber
的值返回true
或false
。
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
,你都在重新声明这个变量,所以它的值在你的脚本中是不断变化的。 - 不更新全局变量,只需将
jsRandomNumber
变量设置为getRandomInt
函数的局部变量。您可以返回它并使用返回值。局部变量在这里更有意义,因为你只需要在一个地方改变这个数字。如果将变量保留在全局作用域中,那么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()
首先不需要重新声明jsRandomNumber
。var
主要用于第一次声明变量。因此,您可以删除多次出现的无关的var
。
其次,在比较if
语句中的值时,需要使用==
操作符。单个=
是赋值操作符,也将返回您设置的值。例如,if(a=1)
总是求值为true,因为它设置a
等于1,然后返回1。点击这里了解更多信息。因此,您应该将if语句更改为:
if(jsRandomNumber == 1) {
....
}
- 应该在什么时候使用Javascript条件运算符
- 不使用关系运算符的JavaScript条件表达式
- 我需要一些javascript条件,比如媒体查询
- Javascript条件-不隐藏ID
- IE11是否删除了javascript条件编译
- JavaScript条件(如果并行)
- 在HTML中搜索字符串并返回True的Javascript条件
- javascript条件未到达else
- 推送前的JavaScript条件
- JavaScript 条件总是失败
- 如何处理 JavaScript 条件语句中的可为空的对象
- Javascript 条件返回语句(Shorthand if-else 语句)
- For 循环中的动态 Javascript 条件
- 如何理解“if ( obj.length === +obj.length )” Javascript 条件语句
- 这个Javascript条件检查是什么
- 获取数组中满足 Javascript 条件的第一个元素的高阶方法
- 如何使用JavaScript /条件注释测试浏览器是否符合CSS3
- Javascript 条件查找/替换
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 仅将特定元素添加到 html 正文中,具体取决于 javascript 条件