任何人都可以帮我调试我的错误

时间:2013-07-29 18:55:14

标签: javascript html

我正在使用HTML和JavaScript开发网站。当我运行我的代码时,它会运行但是我的if else语句永远不会打到其他情况,无论输入什么内容。有人可以告诉我什么是错的。我是Forms和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>

事后看来(仍然是20/20)我应该已经意识到这个表达总是对我的或陈述是真的,所以谢谢v2b指出这一点。

2 个答案:

答案 0 :(得分:3)

我不是(并且没有人真的)会为您调试代码。但是这里有一些要点让你前进:

  • 您的脚本在输入均匀加载之前运行。将<script>元素放置在页面底部,位于结束</body>下方。

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

    var form = document.forms[0]; //Or getElementByID, whatever
    console.log(form["FirstName"]); //The first name input.
    
  • 你的病情太久了。单独检查项目并每次返回适当的错误。你也会帮助你的用户!

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

  • 使用<input placeholder="placeholder">拥有占位符文字。 (而不只是给出一个初始值)。此外,由于您有标签,占位符文本是多余的。

答案 1 :(得分:3)

(document.getElementsByTagName(“input”)[0] .value!==“first”|| document.getElementsByTagName(“input”)[0] .value!==“”)

将永远评估为真..记住它是一个OR,即使一个是真的它是真的..
如果值是“第一”那么它将是(false || true),

和其他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';
}