我正在寻找一系列布尔值,这些布尔值会根据用户点击的链接而改变。首先,我初始化它们......
var boolean1 = false;
var boolean2 = false;
var boolean3 = false;
接下来,我的字符串包含指向新页面的链接......
var link1 = "index.html";
var link2 = "someotherpage.html";
var link3 = "somepage.html";
然后,我将值放在各自的数组中
var booleanArray = new Array(3);
booleanArray[0] = boolean1;
booleanArray[1] = boolean1;
booleanArray[2] = boolean1;
var linkArray = new Array(3);
linkArray[0] = link1;
linkArray[1] = link2;
linkArray[2] = link3;
然后,我有更改值的函数(将根据用户点击的链接调用这些值)...
//onlick...
function changeBoolean1()
{
boolean1 = true;
}
function changeBoolean2()
{
boolean2 = true
}
function changeBoolean3()
{
boolean3 = true;
}
最后,根据称为onlick
的方法,其中一个布尔值将设置为false
。那时,我想循环遍历布尔数组,并将哪一个设置为false
。根据哪一个false
,它的相应链接将打开。
function getChoice()
{
for(var i = 0; i < booleanArray.length; i++)
{
if(booleanArray[i] == true)
{
window.location.href = linkArray[i];
break;
}
}
}
但是,该方法没有基于
答案 0 :(得分:0)
您需要更改onclick函数以更新数组而不是原始变量
//onlick...
function changeBoolean1() {
booleanArray[0] = true;
}
function changeBoolean2() {
booleanArray[1] = true
}
function changeBoolean3() {
booleanArray[2] = true;
}
由于布尔值是基元,存储在实际数组中的是值,不是对原始变量的引用(正如您对对象所期望的那样)
答案 1 :(得分:0)
原始类型变量,如string,number始终作为pass by value传递。 所以你需要在数组中显式设置你的值,或者在一个对象中设置你的布尔属性。
答案 2 :(得分:0)
function changeBool(booleanArray, index){
booleanArray[index] = true;
}
function getChoice(){
for(var i = 0; i < booleanArray.length; ++i){
if(booleanArray[i]){
window.location.href = linkArray[i];
break;
}
}
}