为什么我得到一个空值?

时间:2016-03-08 16:34:47

标签: javascript

我有一个HTML表单,如下所示:



ar form={
    formName: document.getElementById("contactus"),
    name: document.getElementById("name"),
    email: document.getElementById("email"),
    comment: document.getElementById("question")
};

//form submit
form.formName.addEventListener( "submit", checkform );

<form name="contactus" method="post" action="html_form_send.php">
    <label for="name">Name:</label><br /><input <input  type="text" name="name" maxlength="50" size="59" autofocus required/><br /><br />
    <label for="email">E-Mail Address:</label><br /><input  type="email" name="email" maxlength="50" size="59" required/><br /><br />
    <label for="question">Question:</label><br /><textarea name="question" maxlength="1000" cols="50" rows="6" required></textarea><br /><br />
    <input class="c1_scButton" type="submit" value="send"/>
</form>

<script type="text/javascript" src="js/validate.js"></script>
&#13;
&#13;
&#13;

问题是Firebug显示form.formName为空,其余的表单值也是如此。为什么他们没有获得元素?

该脚本的最终目标是验证表单数据。我认为如果元素将加载,表单的其余部分将起作用。

3 个答案:

答案 0 :(得分:2)

因为你试图通过ID获取元素,当它没有ID时。

将ID添加到表单标记应解决问题:

std::map<double, double>::const_iterator
getIt(map<double, double> const& o)
{
    return o.begin();
}

但您可能更愿意将方法更改为<form name="contactus" ID="contactus" method="post" action="html_form_send.php"> ,因为您根本不使用ID。

在这里:http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp

答案 1 :(得分:0)

您的表单中包含名称联系人,但您正试图通过ID获取该表单。

此外,输入名称似乎有误:

<input <input  type="text" name="name" maxlength="50" size="59" autofocus required/>

您可能希望删除第一个<input

最后,如果您将JavaScript包含在页面顶部,它可能会在页面完全加载之前运行,这意味着表单和/或输入元素可能尚未在DOM中。

要解决此问题,请添加一个在DOM准备就绪时触发的事件侦听器。如果您正在使用JQuery,请执行以下操作:

$(document).ready(function(){
    //do stuff here
});

如果您不需要JQuery,请不要将其包含在内。您可以在this question的答案中找到有关如何执行此操作的详细信息。

答案 2 :(得分:0)

这样可以确定..

<form name="contactus" id='contactus' method="post" action="html_form_send.php">
           <label for="name">Name:</label><br />
             <input  type="text" id='name' name="name" maxlength="50" size="59" autofocus required/><br /><br />
            <label for="email">E-Mail Address:</label><br />
            <input  type="email" id='email' name="email" maxlength="50" size="59" required/>
            <br /><br />
          <label for="question">Question:</label><br />
            <textarea name="question" id='question' maxlength="1000" cols="50" rows="6" required></textarea><br /><br />
       <input class="c1_scButton" type="submit" value="send"/>
            </form>