从 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.
我正在尝试从数组中获取值。如果数组中的值等于 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.