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

在JavaScript中从数组中获取布尔值,javascript,arrays,loops,boolean,Javascript,Arrays,Loops,Boolean,我试图从数组中获取值。如果数组中的值等于false,它会将页面重定向到新窗口。但是,dialogBehavior()函数将不起作用。有人知道问题出在哪里吗?语法有错误吗 var byLawsToken = false; var meetingSummaryToken = false; var directoryToken = false; var tokenArray = new Array(3); tokenArray[0] = byLawsToken; tokenArray[1] = me

我试图从数组中获取值。如果数组中的值等于false,它会将页面重定向到新窗口。但是,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());
}
var bylwstoken=false;
var meetingSummaryToken=false;
var directoryToken=false;
var tokenArray=新数组(3);
tokenArray[0]=BylWSToken;
tokenArray[1]=meetingSummaryToken;
tokenArray[2]=directoryToken;
var windowLocation=新阵列(3);
windowLocation[0]=“bylaws.html”;
windowLocation[1]=“index.html”;
windowLocation[2]=“about.html”;
函数dialogBehavior()
{
var hashedPassword=“6909B1C8FA84HD98B1F25AA1A4BCC23”;
var hashedInput=CryptoJS.MD5($(“#passwordTXT”).val()).toString();
if(hashedInput==hashedPassword)
{
//我遇到麻烦的那部分
for(var i=0;i
看起来您正试图在令牌数组中放置对令牌的引用,但您的代码只是用令牌的初始值填充数组

var someVariable = false;
tokenArray[0] = someVariable; // tokenArray[0] === false
someVariable = true; // tokenArray[0] still === false
您的令牌变量和令牌数组之间没有长期关联

你可以这样做:

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
然后将throws函数更改为修改tokenVariable.val而不是tokenVariable

在resetTokens中,您还遇到了一个问题,您试图重置全局令牌变量,但您使用var声明局部变量。您可以直接设置它们,而不使用var;否则全局变量将保持不变


此外,如果您能从大局出发,向我们提供更多关于您试图实现的目标的详细信息,可能还有更优雅的方式来完成您想要做的事情。

我认为问题出在这里:

if(tokenArray[i].get() == true)
.get()函数不是来自JavaScript核心函数。。所以这可能是你问题的原因


“dialogBehavior()函数将不起作用”请详细说明。它实际上做什么?为了尝试修复它,您做了什么?在JavaScript中进行比较时,始终使用三重等于
==
。您也会说“如果数组中的值等于false,它会将页面重定向到新窗口”,但您的代码会说相反的话
if(tokenArray[i].get()==true){window.location.href=windowLocation[i];}
@navasd这完全是错误的。如果您应该只使用===运算符,那么为什么其他运算符会存在呢?函数dialogBehavior()将根据用户单击的链接将用户重定向到新网页。但是,该函数不会将用户重定向到新页面。循环中的if语句将不会执行。当然可以。如果我回答了你的问题,你可以接受并投票支持我的回答。