Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';对象不是函数';-onclick事件_Javascript_Function_Syntax Error - Fatal编程技术网

Javascript ';对象不是函数';-onclick事件

Javascript ';对象不是函数';-onclick事件,javascript,function,syntax-error,Javascript,Function,Syntax Error,在开始之前,我没有分号的问题,也没有向函数传递任何值 当我尝试从控制台执行函数“login()”时,它工作正常,但当我单击HTML输入按钮调用它时,我得到“UncaughtTypeError:对象不是函数”。顺便说一下,这是镀铬的 var aj=new XMLHttpRequest(); var loginf=document.forms["login"]; var regf=document.forms["reg"]; function login(){ var errors=documen

在开始之前,我没有分号的问题,也没有向函数传递任何值

当我尝试从控制台执行函数“login()”时,它工作正常,但当我单击HTML输入按钮调用它时,我得到“UncaughtTypeError:对象不是函数”。顺便说一下,这是镀铬的

var aj=new XMLHttpRequest();
var loginf=document.forms["login"];
var regf=document.forms["reg"];

function login(){
var errors=document.getElementById("login_err");
var errs=[];
var uname=loginf['uname'];
var pass=loginf['pass'];
var unameVal=uname.value;
var passVal=pass.value;

if(unameVal.length<4 && unameVal.length>0){
    errs.push("Username too short. Try again please.");
}
else if(unameVal.length>18){
    errs.push(innerHTML="Username is too long. Try again please.");
}
else if(unameVal.length==0){
    errs.push("Please enter a username.");
}

if(passVal.length<8){
    errs.push("Password too short. Try again, please.");
}
else if(passVal.length>30){
    errs.push("Password is too long. Try again please.");
}

if(errs.length==0){
    aj.onreadystatechange=function(){
        if(aj.readyState>=4 && aj.status==200){
            if(aj.responseText=="suc"){
                window.location="/new.php";
            }
        }
    }
    aj.open("POST","/inc/php/core.php",false);
    aj.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    aj.send("login=true&data="+data);
}
else{
    errors.innerHTML="<ul>";

    for(var x=0;x<errs.length;x++){
        errors.innerHTML+="<li>"+errs[x]+"</li>";
    }

    errors.innerHTML+="</ul>";
}
}

function reg(){

}
var aj=new-XMLHttpRequest();
var loginf=document.forms[“login”];
var regf=document.forms[“reg”];
函数登录(){
var errors=document.getElementById(“登录错误”);
var errs=[];
var uname=loginf['uname'];
var pass=loginf['pass'];
var unameVal=uname.value;
var passVal=pass.value;
如果(未评估长度0){
推送(“用户名太短,请重试”);
}
否则,如果(未评估长度>18){
errs.push(innerHTML=“用户名太长。请重试。”);
}
else if(unameVal.length==0){
推送(“请输入用户名”);
}
if(通行长度30){
errs.push(“密码太长,请重试”);
}
if(errs.length==0){
aj.onreadystatechange=函数(){
如果(aj.readyState>=4&&aj.status==200){
如果(aj.responseText==“suc”){
window.location=“/new.php”;
}
}
}
open(“POST”,“/inc/php/core.php”,false);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
aj.send(“login=true&data=“+data”);
}
否则{
错误。innerHTML=“
    ”;
    对于(var x=0;x),结果表明函数名“login”是对表单和函数的引用

    我将“login()”更改为“loginUser()”,并在控制台中键入“login”,表单被返回,因此它们确实相互冲突


    再次感谢您的帮助,特别感谢Marc给出了真实的答案。

    如果您能在哪一行给我们一个JSFIDLE,那将更有帮助?堆栈跟踪是什么?您可能有一个带有“login”的DOM元素当他的id将脚本移到头部并更改函数的名称时,它不会与元素id发生冲突。注意,不是具有名称login的表单,而是具有id login的div。尝试更改表单或函数的名称您可以通过将所有标识符放在一个命名空间。
    <input type="button" class="submit" value="Log in" style="width:25%" onclick="login();"/>