Javascript 有人能帮我调试我的错误吗

Javascript 有人能帮我调试我的错误吗,javascript,html,Javascript,Html,我正在开发一个包含HTML和JavaScript的网站。当我运行代码时,它确实会运行,但是无论键入什么,if-else语句都不会命中else。谁能告诉我怎么了。我不熟悉表单和javaScript,但我认为javaScript的大部分内容与Java相同。无论如何,代码如下 <form id="eForm"> <script> function CheckForm() { var first=document.getE

我正在开发一个包含HTML和JavaScript的网站。当我运行代码时,它确实会运行,但是无论键入什么,if-else语句都不会命中else。谁能告诉我怎么了。我不熟悉表单和javaScript,但我认为javaScript的大部分内容与Java相同。无论如何,代码如下

    <form id="eForm">        
    <script>

    function CheckForm()
    {
    var first=document.getElementsByTagName("input")[0].value;
    var mid=document.getElementsByTagName("input")[1].value;
    var last=document.getElementsByTagName("input")[2].value;
    var email=document.getElementsByTagName("input")[3].value;
    var date=document.getElementsByTagName("input")[4].value;
    var time=document.getElementsByTagName("input")[5].value;


    if((document.getElementsByTagName("input")[0].value !=="first" || document.getElementsByTagName("input")[0].value !=="") && 

    (document.getElementsByTagName("input")[1].value !=="Initial" || document.getElementsByTagName("input")[1].value !=="") && 

    (document.getElementsByTagName("input")[2].value !=="last" || document.getElementsByTagName("input")[2].value !=="") && 

    (document.getElementsByTagName("input")[3].value !=="someone@example.com" || document.getElementsByTagName("input")[3].value !=="") && 

    (document.getElementsByTagName("input")[4].value !=="xx/xx/xxxx" || document.getElementsByTagName("input")[4].value !=="") && 

    (document.getElementsByTagName("input")[5].value !=="xx:xx" || document.getElementsByTagName("input")[5].value !==""))
    {
    document.getElementsByTagName("input")[0].value='fail';
    }
    else
    {
    alert("One or more fields were not filled in correctly. /n Please try again.");
    document.getElementsByTagName("input")[0].value='works';
    }

    first.value='works';
    }
    </script>

    First name: <input type="text" name="FirstName" id="FirstName" value="first"><br>
    Middle Initial: <input type="text" name="MidName" id="MidName" value="Initial"><br>
    Last name: <input type="text" name="LastName" id="LastName" value="last"><br>
    E-Mail: <input type="text" name="Email" id="Email" value="someone@example.com"><br>
    Date for request: <input type="date" name="Date" id="Date" value="xx/xx/xxxx"><br>
    Time for request: <input type="time" name="Time" id="Time" value="xx:xx"> 
    AM<input type="radio" name="AM/PM" id="AM" checked="true">
    PM<input type="radio" name="AM/PM" id="PM" checked="false"><br>

    <input onclick="CheckForm()" type="button" value="Submit">
    <input onclick="CheckForm()" type="submit" value="Submit">

    On Submit, if a feild is left not filled out, then do not go through and show a message saying that "One or more feilds are not filled out. You must fill them 

    out in order to submit this form."

    </form>

函数检查表()
{
var first=document.getElementsByTagName(“输入”)[0]。值;
var mid=document.getElementsByTagName(“输入”)[1]。值;
var last=document.getElementsByTagName(“输入”)[2]。值;
var email=document.getElementsByTagName(“输入”)[3]。值;
var date=document.getElementsByTagName(“输入”)[4]。值;
var time=document.getElementsByTagName(“输入”)[5]。值;
如果((document.getElementsByTagName(“输入”)[0]。值!==“第一个”|| document.getElementsByTagName(“输入”)[0]。值!==”)&&
(document.getElementsByTagName(“输入”)[1]。值!=“初始”| | document.getElementsByTagName(“输入”)[1]。值!=“初始”&&
(document.getElementsByTagName(“输入”)[2]。值!=“last”|| document.getElementsByTagName(“输入”)[2]。值!=“last”&&
(document.getElementsByTagName(“输入”)[3]。值!=”someone@example.com“|| document.getElementsByTagName(“输入”)[3]。值!=”)&&
(document.getElementsByTagName(“输入”)[4]。值!==“xx/xx/xxxx”|| document.getElementsByTagName(“输入”)[4]。值!==”)&&
(document.getElementsByTagName(“输入”)[5]。值!==“xx:xx”|| document.getElementsByTagName(“输入”)[5]。值!==”)
{
document.getElementsByTagName(“输入”)[0]。value='fail';
}
其他的
{
警报(“一个或多个字段填写不正确。/n请重试。”);
document.getElementsByTagName(“输入”)[0].value='works';
}
首先,价值观是有效的;
}
名字:
中间首字母:
姓氏:
电子邮件:
请求日期:
请求时间: 是 PM
提交时,如果某个字段未填写,则不要通过并显示一条消息,说明“一个或多个字段未填写。您必须填写它们。” “请退出以提交此表格。”
事后看来(仍然是20/20),我应该意识到这个表达式对我的or语句总是正确的,所以感谢v2b指出这一点。

我不会(也没有人会)为您调试代码。但这里有几点可以让你继续前进:

  • 您的脚本在输入加载之前运行。将
    元素放在页面底部,就在结尾的
    下方

  • 您的输入有名称,请使用它们:

    var form = document.forms[0]; //Or getElementByID, whatever
    console.log(form["FirstName"]); //The first name input.
    
  • 你的病情太长了。分别检查项目,每次返回相应的错误。你也会帮你的用户一个忙

  • 您没有使用
    s来标记输入标签。那样做

  • 使用
    可包含占位符文本。(并不仅仅给出初始值)。此外,由于您有标签,占位符文本是多余的

    • (document.getElementsByTagName(“输入”)[0]。值!==“第一个”| | document.getElementsByTagName(“输入”)[0]。值!==”)

      将始终被评估为真实。。记住这是一个或,即使一个是真的,它也是真的
      如果值为“first”,则它将为(false | | true),
      如果值为“xyz”,则它将为(true | | true),
      如果值为“”,则它将为(true | | false)

      同样,其他5行也一样

      编辑:
      下面将执行您希望它执行的操作。另外,不要重复document.getElementsByTagName太多次。Dom访问成本很高。在你的情况下,没有必要重复一遍又一遍。你可以这样做

      var inputElement = document.getElementsByTagName("input");
      
      if((inputElement[0].value !=="first" && inputElement[0].value !=="") && 
          (inputElement[1].value !=="Initial" && inputElement[1].value !=="") && 
          (inputElement[2].value !=="last" && inputElement[2].value !=="") && 
          (inputElement[3].value !=="someone@example.com" && inputElement[3].value !=="") && 
          (inputElement[4].value !=="xx/xx/xxxx" && inputElement[4].value !=="") && 
          (inputElement[5].value !=="xx:xx" && inputElement[5].value !==""))
      {
          inputElement[0].value='fail';
      }
      else
      {
          alert("One or more fields were not filled in correctly. /n Please try again.");
          inputElement[0].value='works';
      }
      

      您是否尝试过在您选择的浏览器中使用开发者工具(f12)?通常它会给你错误信息,并打断令人不快的代码行。请注意,我自己花了数小时试图调试和研究这个问题,我并不是试图通过询问别人的知识来简化事情,如果我自己找到了答案,我会发帖子,以防其他人最终遇到与我相同的问题。是的,我已经试过了,它没有给我任何错误,我唯一能猜到的是它是一个逻辑错误,我看不到标签中的属性“name”。如果你能提交,这是必要的。你真的需要学习如何使用函数并调用它们,使用某种形式的for循环等。这只是一种编写代码的糟糕方式。@Alohci:这些怎么不正确?这些怎么不相关呢?第一点击中了关键点。脚本在输入存在之前就运行了。其余的都是可选的,但仍然很重要。脚本运行较早,但只创建一个函数。单击按钮时,该函数将运行。占位符和标签不是多余的。特别指出:“占位符属性不应用作标签的替代物。”@Alohci:但由于标签存在,占位符是多余的。占位符不应单独存在,但与标签一起使用时是多余的。还有,关于第一点你是对的。我就知道是那样的蠢事。非常感谢。另外,感谢您提供有关Dom访问的信息。