此代码就是我现在使用的代码。但是当我尝试使用数组来比较值时,它不起作用。 如果有人知道原因,请回复。
<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>
答案 0 :(得分:3)
if (array[i] == value) return true;
}
return false;
}
那里的真的误导了缩进!
window.passordInput = prompt("password");
我不确定你为什么要使用全局来存储输入,因为你只是在本地函数中使用它。 (如果你确实需要全局,那么你不需要window.
前缀,因为你还没有用本地var
声明该变量。)
这可能是您的问题: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>
我在这里使用Array#indexOf
进行列表内测试。这是新版JavaScript中的标准方法,但并非每个浏览器都支持它。您可以将其添加到不支持的浏览器中,如下所示:
// Add ECMA262-5 Array indexOf if not supported natively
//
if (!('indexOf' in Array.prototype)) {
Array.prototype.indexOf= function(find, from /*opt*/) {
for (var i= from || 0, n= this.length; i<n; i++)
if (i in this && this[i]===find)
return i;
return -1;
};
}
无论哪种方式,请注意JavaScript密码“保护”不仅对可访问性而言非常糟糕,而且完全不安全。你永远不应该在任何你关心的事情上使用它。如果要正确执行,请查找真正的HTTP基本身份验证(htaccess)和/或基于cookie的表单登录。
答案 1 :(得分:1)
您刚刚忘记了d
中的passorInput
:
inArray(passordLager,passordInput)
答案 2 :(得分:0)
您指定给window.passordInput
但是通过了passordInput
- 它们不一样。
如果您在FireFox中打开它,您可以通过工具 - >错误控制台查看脚本执行时生成的错误消息。