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

Get Booleans Out of An Array in JavaScript

本文关键字:获取 布尔值 数组 JavaScript      更新时间:2023-09-26

我正试图从数组中获取值。如果数组中的值等于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());
}

看起来您试图在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。

你在resetTokens中也有一个问题,你试图重置你的全局令牌变量,但你使用var声明局部变量,你可以直接设置它们,没有var;否则全局变量将保持不变。

而且,如果你能给我们更多关于你想要完成的事情的细节,那么可能有更优雅的方法来完成你想要做的事情。

我认为这里的问题是:

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

.get() Function不是JavaScript的核心函数。所以这可能是你的问题的原因。