Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:;类型错误:';未定义';“不是对象”;_Javascript_Jquery_Typeerror - Fatal编程技术网

Javascript JS:;类型错误:';未定义';“不是对象”;

Javascript JS:;类型错误:';未定义';“不是对象”;,javascript,jquery,typeerror,Javascript,Jquery,Typeerror,如您所见,我所要做的就是获取#email字段值的长度。它适用于其他两个字段,但不适用于电子邮件字段。它给出“TypeError:“undefined”不是对象” 有什么原因吗 我在Safari和Google Chrome上都试过了,都给出了相同的错误 HTML: var name = $("input[#name]").value; var email = $("input[#email]").value; var msg = $("input[#msg]").value; var nameL

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

有什么原因吗

我在Safari和Google Chrome上都试过了,都给出了相同的错误

HTML:

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;

电子邮件

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

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

<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>
或者,出于说明目的,这也可以(从jQuery对象中取出DOM对象并使用
.value
):


根据您添加到问题中的HTML,您还需要修复选择器。要以
id=“xxx”
为目标,只需使用
$(“#xxx”)
。不需要选择器的其他部分,因为ID在整个文档中必须是唯一的。因此,如果您所有的HTML都像您在问题中显示的电子邮件部分一样工作,那么您可以使用:

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

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

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

<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>
或者,出于说明目的,这也可以(从jQuery对象中取出DOM对象并使用
.value
):


根据您添加到问题中的HTML,您还需要修复选择器。要以
id=“xxx”
为目标,只需使用
$(“#xxx”)
。不需要选择器的其他部分,因为ID在整个文档中必须是唯一的。因此,如果您所有的HTML都像您在问题中显示的电子邮件部分一样工作,那么您可以使用:

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

.value
不是jQuery对象的有效属性。您正在查找
.val()
:。请参阅。请向我们显示您试图针对的HTML,以便我们可以建议您的选择器是否正确?
。value
不是jQuery对象的有效属性。您正在查找
.val()
:。请参阅。请向我们显示您试图针对的HTML,以便我们可以建议您的选择器是否正确?这解决了该问题,但是-它导致了代码中的另一个问题-在另一个变量上给我相同的错误<代码>var emailStructureAtPos=email.indexOf(“@”)@user3666951-您可能在代码的更深处犯了一些其他错误。如果看不到该代码,我们将无能为力。@user3666951-查看调试器,看看当时的
电子邮件是什么。也许它超出了范围?@user3666951:你的选择器看起来很奇怪
input[#name]
选择一个名为
#name
的属性的
input
。我认为
#
在属性名中甚至都不是有效字符,所以我怀疑这实际上选择了什么。如果要按ID选择,只需使用
#name
。我建议您阅读jQuery教程:,。@user3666951-您需要在这里学习一些基本的调试技术。使用
console.log()
语句或在调试器中检查变量和jQuery对象的值,找出哪里出了问题。很明显,您正在更改代码,因此我不知道您现在在什么代码上出现了什么错误,因此根据您的最新评论,我无能为力。您的代码中有错误。隔离代码的具体行,检查该行代码周围的变量和表达式的结果,找出哪些不起作用,或者发布更多的细节。这解决了这个问题,但是-它导致了代码中的另一个问题-在另一个变量上给了我相同的错误<代码>var emailStructureAtPos=email.indexOf(“@”)@user3666951-您可能在代码的更深处犯了一些其他错误。如果看不到该代码,我们将无能为力。@user3666951-查看调试器,看看当时的
电子邮件是什么。也许它超出了范围?@user3666951:你的选择器看起来很奇怪
input[#name]
选择一个名为
#name
的属性的
input
。我认为
#
在属性名中甚至都不是有效字符,所以我怀疑这实际上选择了什么。如果要按ID选择,只需使用
#name
。我建议您阅读jQuery教程:,。@user3666951-您需要在这里学习一些基本的调试技术。使用
console.log()
语句或在调试器中检查变量和jQuery对象的值,找出哪里出了问题。很明显,您正在更改代码,因此我不知道您现在在什么代码上出现了什么错误,因此根据您的最新评论,我无能为力。您的代码中有错误。隔离代码的具体行,检查该行代码周围的变量和表达式的结果,找出哪些不起作用,或者发布更多细节。