JS:" TypeError:' undefined'不是一个对象"

时间:2014-05-22 22:18:12

标签: javascript jquery typeerror

var name = $("input[#name]").value;
var email = $("input[#email]").value;
var msg = $("input[#msg]").value;

var nameLength = name.length;
var emailLength = email.length;
var msgLength = msg.length;

正如您所看到的,我所要做的就是获取#email字段值的长度。它适用于其他两个字段,但不适用于电子邮件字段。它给出了“TypeError:'undefined'不是一个对象”。

有什么理由?

我在Safari和谷歌浏览器中都试过,两者都给出了同样的错误。

HTML:

<div class="form-group">
  <label class="col-md-4 control-label" for="email">Email</label>  
  <div class="col-md-5">
    <input id="email" name="email" type="text" placeholder="Enter your email address
    here" class="form-control input-md" required="">
  </div>
</div>

1 个答案:

答案 0 :(得分:3)

您正在尝试在jQuery对象上使用DOM属性。如果您有一个jQuery对象,那么您必须使用jQuery方法.val(),而不是DOM属性.value,或者您必须进入jQuery对象以获取DOM对象,然后您可以使用DOM属性。

我建议您将其更改为使用jQuery方法获取值:

var name = $("input[#name]").val();
var email = $("input[#email]").val();
var msg = $("input[#msg]").val();

或者,为了便于说明,这也可以(从jQuery对象中获取DOM对象并使用.value):

var name = $("input[#name]")[0].value;
var email = $("input[#email]")[0].value;
var msg = $("input[#msg]")[0].value;

根据您已添加到问题中的HTML,您还需要修复选择器。要定位id="xxx",您只需使用$("#xxx")即可。不需要选择器的其他部分,因为在整个文档中ID必须是唯一的。因此,如果您的所有HTML都与您在问题中显示的电子邮件部分相同,那么您可以使用此功能:

var name = $("#name").val();
var email = $("#email").val();
var msg = $("#msg").val();