JavaScript:循环播放一系列布尔值

时间:2015-08-15 05:05:14

标签: javascript arrays loops if-statement boolean

我正在寻找一系列布尔值,这些布尔值会根据用户点击的链接而改变。首先,我初始化它们......

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;
        }
    }
}

但是,该方法没有基于

3 个答案:

答案 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;
        }
    }
}