从 JavaScript 中的数组中获取布尔值

Get Booleans Out of An Array in JavaScript

我正在尝试从数组中获取值。如果数组中的值等于 false,它将把页面重定向到一个新的 window。但是,dialogBehavior() 函数将不起作用。有谁知道问题出在哪里?语法有错误吗?

var byLawsToken = false;
var meetingSummaryToken = false;
var directoryToken = false;

var tokenArray = new Array(3);
tokenArray[0] = byLawsToken;
tokenArray[1] = meetingSummaryToken;
tokenArray[2] = directoryToken;


var windowLocation = new Array(3);
windowLocation[0] = "bylaws.html";
windowLocation[1] = "index.html";
windowLocation[2] = "about.html";

function dialogBehavior()
{
    var hashedPassword = "6909b1c8fa84hd98b1f25aa1a4bccc23";
    var hashedInput = CryptoJS.MD5($("#passwordTXT").val()).toString();

    if(hashedInput == hashedPassword)
    {

       // The part I'm having trouble with 
       for(var i = 0; i < tokenArray.length; i++)
       {
           if(tokenArray[i].get() == true)
           {
               window.location.href = windowLocation[i];
               break;
           }
       }
    }

    else
    {
        $("#error").show();
        $("#passwordTXT").val("")
    }

}

function throwByLawsToken()
{
    byLawsToken = true;

}

function throwMeetingSummaryToken()
{
    meetingSummaryToken = true;

}

function throwDirectoryToken()
{
    directoryToken = true;
}

function resetTokens()
{
    var byLawsToken = false;
    var meetingSummaryToken = false;
    var directoryToken = false;
}


function hideDialog()
{
    $("#error").hide();
    $("#passwordTXT").val("")

}

function writeDate()
{
    document.write(new Date().getFullYear());
}

您似乎在尝试将对标记的引用放入 tokenArray 中,但您的代码只是用标记的初始值填充数组。

var someVariable = false;
tokenArray[0] = someVariable; // tokenArray[0] === false
someVariable = true; // tokenArray[0] still === false

您的令牌变量和 tokenArray 之间没有长期关联。

你可以这样做:

var byLawsToken = {val: false};
var meetingSummaryToken = {val: false};
var directoryToken = {val: false};

然后

if(tokenArray[i].val) // no need to do an equality check with true

然后更改抛出函数以修改 tokenVariable.val 而不是 tokenVariable。

您在 resetTokens 中也遇到了问题,您试图重置全局标记变量,但使用 var 声明了局部变量。你可以直接设置它们,没有 var;否则全局变量将保持不变。

此外,如果您愿意向我们提供更多关于您想要完成的事情的详细信息,那么可能有更优雅的方法来完成您想要做的事情。

我觉得问题在这里:

if(tokenArray[i].get() == true)

.get() Function Not from JavaScript core functions .. So may be it's the reason of your problem.