Javascript 将值与数组值进行比较时出现问题
这是我现在使用的代码。但当我尝试使用数组来比较值时,它不起作用。 如果有人知道原因,请回答Javascript 将值与数组值进行比较时出现问题,javascript,arrays,Javascript,Arrays,这是我现在使用的代码。但当我尝试使用数组来比较值时,它不起作用。 如果有人知道原因,请回答 <html> <head> <script type-'text/javascript'> function hovedFunksjon() { //alert("test av funksjon fungerte"); //alert(passordLager); window.open("index10.html"
<html>
<head>
<script type-'text/javascript'>
function hovedFunksjon()
{
//alert("test av funksjon fungerte");
//alert(passordLager);
window.open("index10.html","Window1","menubar=no,width=430,height=360,toolbar=no");
}
function inArray(array, value) {
for (var i = 0; i < array.length; i++) {
if (array[i] == value) return true;
}
return false;
}
function spørOmPassord()
{
var passordLager = ["pass0","pass1","pass2"];
window.passordInput = prompt("password");//Ved å bruke "window." skaper man en global variabel
//if (passordInput == passordLager[0] || passordLager[1] || passordLager[2])
if (inArray(passordLager,passorInput) )
{
hovedFunksjon();
}
else
{
alert("Feil passord");
//href="javascript:self.close()">close window
}
}
function changeBackgroundColor()
{
//document.bgColor="#CC9900";
//document.bgColor="YELLOW"
document.bgColor="BLACK"
}
</script>
</head>
<body>
<script type-'text/javascript'>
changeBackgroundColor();
</script>
<div align="center">
<form>
<input type = "button" value = "Logg inn" onclick="spørOmPassord()">
</form>
</div>
</body>
</html>
您分配给window.passorInput,但传递passorInput-它们不相同
如果您在FireFox中打开它,您可以通过工具->错误控制台看到脚本执行时生成的错误消息。您分配给window.passordInput,但传递passordInput-它们不同
if (array[i] == value) return true;
}
return false;
}
如果你在FireFox中打开它,你可以通过工具->错误控制台看到脚本执行时产生的错误消息
if (array[i] == value) return true;
}
return false;
}
那真是令人误解
window.passordInput = prompt("password");
我不知道为什么要使用全局函数来存储输入,因为您只在本地函数中使用它。如果你真的需要一个全局窗口,你不需要窗口。前缀,因为您还没有用局部变量声明该变量
这可能是您的问题:prompt在IE7+中不再可用。出于极其可疑的安全原因,微软已经停止了它的工作。您可能需要想出另一种涉及表单字段的方法,例如:
<input id="password" type="password"/>
<input id="login" type="button" value="Login"/>
<script type="text/javascript">
document.getElementById('login').onclick= function() {
var password= document.getElementById('password').value;
if (['pass0', 'pass1', 'pass2'].indexOf(password)!==-1) {
window.open('thing.html', '_blank');
} else {
alert('no.');
}
};
</script>
无论如何,要知道JavaScript密码“保护”不仅对可访问性很糟糕,而且完全不安全。你不应该把它用在任何你关心的事情上。如果希望正确执行,请查找真正的HTTP基本身份验证htaccess和/或基于cookie的表单登录
那真是令人误解
window.passordInput = prompt("password");
我不知道为什么要使用全局函数来存储输入,因为您只在本地函数中使用它。如果你真的需要一个全局窗口,你不需要窗口。前缀,因为您还没有用局部变量声明该变量
这可能是您的问题:prompt在IE7+中不再可用。出于极其可疑的安全原因,微软已经停止了它的工作。您可能需要想出另一种涉及表单字段的方法,例如:
<input id="password" type="password"/>
<input id="login" type="button" value="Login"/>
<script type="text/javascript">
document.getElementById('login').onclick= function() {
var password= document.getElementById('password').value;
if (['pass0', 'pass1', 'pass2'].indexOf(password)!==-1) {
window.open('thing.html', '_blank');
} else {
alert('no.');
}
};
</script>
无论如何,要知道JavaScript密码“保护”不仅对可访问性很糟糕,而且完全不安全。你不应该把它用在任何你关心的事情上。如果要正确执行,请查找真正的HTTP基本身份验证htaccess和/或基于cookie的表单登录。您刚刚忘记了passorInput中的d:
您刚刚在passorInput中忘记了d:
我不明白你的意思。当你使用一个数组时,到底在哪里比较什么?为什么你所有的函数/var名称都与实词相差1个字母?使您的代码很难理解。您的代码中有一个输入错误,这可能是问题的原因,也可能不是问题的原因:Inarray PassordLager,passorInput-看起来应该是passordInput。@Samuel。。。这不是英语;但这些都是真话,我不明白你的意思。当你使用一个数组时,到底在哪里比较什么?为什么你所有的函数/var名称都与实词相差1个字母?使您的代码很难理解。您的代码中有一个输入错误,这可能是问题的原因,也可能不是问题的原因:Inarray PassordLager,passorInput-看起来应该是passordInput。@Samuel。。。这不是英语;实际上,窗口的属性可以作为全局变量访问,因此分配window.passordInput将创建全局passordInput。碰巧,他的代码中有一个输入错误,他实际上传递了passorInput,所以如果你自己输入错误,你的答案可能会有一点正确性-实际上,在本例中,window.passordInput和passordInput与当前作用域中没有passordInput相同。实际上,窗口的属性可以作为全局变量访问,因此分配window.passordInput将创建全局passordInput。碰巧,他的代码中有一个输入错误,他实际上传递了passorInput,所以如果你自己输入错误,你的答案可能会有一点正确性-实际上,在本例中,window.passordInput和passordInput与当前作用域中没有passordInput相同。+1。我不认为IE7模块会完全提示。IE7+只是讽刺地提示您允许或拒绝脚本化窗口。即使如此,prompt还是非常古老,现代的JS对话框替换也要好得多。是的,它仍然存在,但是你必须跨越的障碍足以使它在实践中无法使用,特别是考虑到IE在第一次调用时就悄悄地弄乱了脚本。+1。我不认为IE7模块会完全提示。IE7+只是讽刺地提示您允许或拒绝脚本化窗口。即使如此,prompt还是非常陈旧,现代的JS对话框替换也要好得多。是的,它仍然存在,但是你必须跨越的障碍足以使它在实践中无法使用,特别是考虑到IE在第一次调用时就悄悄地弄乱了脚本。