Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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 对象属性未定义,但它存在_Javascript - Fatal编程技术网

Javascript 对象属性未定义,但它存在

Javascript 对象属性未定义,但它存在,javascript,Javascript,我刚刚看到一个有史以来最奇怪的错误 因此,我: HTML <div class="mui-textfield mui-textfield--float-label"> <input id="registration-firstname" type="text" required> <label>First name</label> </div> <div class="mui-textfield mui-textf

我刚刚看到一个有史以来最奇怪的错误

因此,我:

HTML

<div class="mui-textfield mui-textfield--float-label">
    <input id="registration-firstname" type="text" required>
    <label>First name</label>
</div>
<div class="mui-textfield mui-textfield--float-label">
    <input id="registration-last-name" type="text" required>
    <label>Last name</label>
</div>
<div class="mui-textfield mui-textfield--float-label">
    <input id="registration-email" type="email" required>
    <label>Email address</label>
</div>
<div class="mui-select">
    <select id="registration-role">
        <option>user</option>
        <option>courier</option>
    </select>
    <label>Role</label>
</div>
问题

如果我这样做:

console.log(elements.form.registration)

它将打印:

Object { firstname: <input#registration-firstname>, lastname : <input#registration-last-name>, email: <input#registration-email>, role: <select#registration-role>, password: <input#registration-password> }
它将打印:

undefined
我已经三次检查了lastname属性是否存在,我甚至尝试过这样做

console.log(Object.keys(elements.forms.registration))
那是印刷的吗

Array [ "firstname", "lastname ", "email", "role", "password" ]

是什么让事情变得更奇怪?给定对象中的任何其他属性都不会出现这个问题

尽管使用
引号定义对象与不使用引号定义对象没有区别,但请更改此选项

registration : {
                "firstname" :  document.getElementById('registration-firstname'),
                "lastname " :  document.getElementById('registration-last-name'),
                "email" :  document.getElementById('registration-email'),
                "role" :  document.getElementById('registration-role')
            }


找到了。在中有额外的尾随空格

//       ↓
"lastname "

我发现了一个错误-我有一个血淋淋的空格:(你在“lastname”后面有一个空格。把它改成“lastname”。这个问题应该以“typo”结束.相反,在我和OP的评论后2分钟发布的一个答案,清楚地表明这是一个简单的打字错误,有4张赞成票…让我们今天打个电话吧。更糟糕的是,另一个答案,它可能会让未来的读者认为在JS中,写对象的属性名时有或没有引号是有区别的-在没有区别的情况下e-也有4张选票。很明显,民主自2016年以来就被打破了。@Rouz我不是苛刻的,我现在很酷。问题是:S.O.是一个知识数据库,不是一个个人调试服务。从这个意义上说,你的问题显然是一个打字错误(我很高兴你解决了它)因为你和我的评论都被发布了,所以答案是不必要的。我相信你不理解这一点。不管怎么说,我错了,祝你们过得愉快。如果你没有“名字”输入你的对象,为什么要使用pharantesis?@SalihŞenolıakarcıI+1你的答案,因为我设法看到了我的空白,谢谢,你意外地犯了错误,我的答案也意外地解决了:)是的,这就是问题所在。我看了3个小时的代码,然后发布到这里,然后我看到它。。。愚蠢的我。。。
registration : {
                "firstname" :  document.getElementById('registration-firstname'),
                "lastname " :  document.getElementById('registration-last-name'),
                "email" :  document.getElementById('registration-email'),
                "role" :  document.getElementById('registration-role')
            }
registration : {
                firstname :  document.getElementById('registration-firstname'),
                lastname :  document.getElementById('registration-last-name'),
                email :  document.getElementById('registration-email'),
                role :  document.getElementById('registration-role')
            }
//       ↓
"lastname "