对象不是函数'- onclick事件

'Object is not a function' - onclick event

本文关键字:onclick 事件 函数 对象      更新时间:2023-09-26

在我开始之前,不,我没有问题,我可以用分号找到,我传递no值给函数。

当我尝试从控制台做函数"login()"时,它工作得很好,但是当我单击HTML输入按钮调用它时,我得到"未捕获的TypeError:对象不是函数"。这是在Chrome中。

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(){
}

然后是输入按钮…

<input type="button" class="submit" value="Log in" style="width:25%" onclick="login();"/>

我看不出代码有什么问题。

如果您能在此代码中找到Waldo,请提前感谢。

jsFiddle HERE: http://jsfiddle.net/6sa7M/2

结果是函数名"login"既是对表单的引用,也是对函数的引用。

我将"login()"改为"loginUser()",并在控制台中输入"login",返回表单,因此它们确实相互冲突。

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