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在第一次调用时就悄悄地弄乱了脚本。