为什么我的JavaScript函数显然没有被调用

本文关键字:调用 我的 JavaScript 函数 为什么 | 更新日期: 2023-09-27 18:12:03

这个JavaScript函数以前是可以工作的,直到我把它变得更复杂,因为我试图把更多的错误检查推到前端。

这是前端代码,只是为了简洁而重要的部分:

    <body>
        <form id="form1" runat="server">
        <div>
     <script type = "text/javascript" >
         function checkThings()
         {
             var jobSeekerFirstName = document.getElementsByName('txtJobSeekerFirstName')[0].value
             var jobSeekerLastName = document.getElementsByName('txtJobSeekerLastName')[0].value
             var jobSeekerUserName = document.getElementsByName('txtJobSeekerUserName')[0].value
             var jobSeekerPassword = document.getElementsByName('txtJobSeekerPassword')[0].value
             var jobSeekerPhoneNumber = document.getElementsByName('txtJobSeekerPhoneNumber')[0].value
             var jobSeekerEmail = document.getElementsByName('txtJobSeekerEmailAddress')[0].value
             var jobSeekerAnswer = document.getElementsByName('txtJobSeekersSecurityAnswer')[0].value
             if ((jobSeekerFirstName != '') && (jobSeekerLastName != '') && (jobSeekerUserName != '') &&
                 (jobSeekerPassword != '') && (jobSeekerPhoneNumber != '') && (jobSeekerEmail != '') &&
                 (jobSeekerAnswer != '')) // First check all fields entered
             {
                 if (jobSeekerUserName.length == 6) {
                     var emAddrCounter;
                     var emlength = jobSeekerEmail.length;
                     var emailCorrect = false;
                     for (emAddrCounter = 0; ((emAddrCounter < emlength) && (emailCorrect == false)) ; emAddrCounter++) {
                         var emChar = jobSeekerEmail.charAt(emAddrCounter);
                         if (emChar == '@') emailCorrect = true;
                     }
                     if (emailCorrect == false) {
                         var emailNoAtChar = " Email address must contain @ character. Please reenter";
                         document.getElementsById('txtMessageBox').Text = emailNoAtChar;
                         return false;
                     }
                     else {
                         return true;
                     }
                 }
                 else
                 {
                     var userNameNotSix = " User name must be exactly six characters long. Please reenter";
                     document.getElementsByName('txtMessageBox').Text = userNameNotSix;
                     return false;
                 }
             }
             else
             {
                 var allElementsPresent = " All Fields must be filled in first. Please reenter all fields";
                 document.getElementsById('txtMessageBox').Text = allElementsPresent;
                 return false;
             }
         }
    </script>
<asp:ScriptManager ID="scripman1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>

调用行

 <asp:Button ID="btnNewJobSeekerRegistration" runat="server" 
             Text=" Register me as a new Job Seeker " 
             OnClientClick= "return checkThings();"
             OnClick="btnNewJobSeekerRegistration_Click" />

我一直得到

操作完成

,它似乎跳过了所有的JavaScript函数和所有的错误检查。什么好主意吗?

为什么我的JavaScript函数显然没有被调用

当你的JavaScript代码"没有被调用"时,通常是因为它有问题。当JavaScript的任何一行抛出异常时(记住,这些JavaScript代码不是编译的,而是解释的,并在运行时立即执行),我猜它下面的每一段代码都会被跳过,后端隐藏的代码会自动执行。要调试它,您需要在浏览器的调试器中打开开发人员控制台。对我来说,这是Chrome,所以去:自定义和控制谷歌Chrome/更多工具/开发人员工具(或Ctrl + Shift + i),然后去控制台。现在在Visual Studio中运行代码,观察JavaScript代码中抛出了什么异常或错误。对我来说,这个错误是"JobSeekerRegistration"。aspx:100 Uncaught TypeError: document. error。getElementsById不是一个函数。我当时所做的只是修改了文件。getElementsById在我的两行代码文档。getElementsByName,瞧,它成功了。特别感谢阿里斯托斯,但我的答案是最好的。