尝试使用元素ID访问本地javascript的对象值
我正在尝试编写一些代码来验证表单。我只想使用原生js(即没有jQuery等),此外,我想避开内联事件 表格(简化版)如下所示:尝试使用元素ID访问本地javascript的对象值,javascript,target,event-listener,object-literal,Javascript,Target,Event Listener,Object Literal,我正在尝试编写一些代码来验证表单。我只想使用原生js(即没有jQuery等),此外,我想避开内联事件 表格(简化版)如下所示: <body onload="addListener()"> <div class="center"> <form method="get" name="signUpForm"> <input type="text" id="firstName"><br /> <in
<body onload="addListener()">
<div class="center">
<form method="get" name="signUpForm">
<input type="text" id="firstName"><br />
<input type="text" id="lastName"><br />
<input type="text" id="age"><br />
<input type="submit" value="Submit">
</form>
</div>
我现在想做的是使用触发事件的字段的id来访问field对象中包含的信息
到目前为止,我编写的两个非常简单的函数如下:
function addListener(){
document.body.addEventListener('keyup', eventIdentify);
}
function eventIdentify(){
var target = event.target || event.srcElement;
var id = target.id
console.log(id.maxlength);
}
然而,在这种情况下,id.maxlength会一直返回未定义
如果我用“console.log(firstName.maxlength);”来尝试它,那么这很好,但显然这不符合要点。不确定这里发生了什么,我怀疑这与用来引用两个不同事物(元素id和对象)的id有关,但我对这一点非常陌生,也不确定
如果有人能给我指出正确的方向,我将不胜感激
提前谢谢
Stef
target.id
是一个字符串,因此它没有maxlength
属性。快速解决方案是访问名为您的id的de变量:
console.log(window[target.id].maxlength)
不过,更好的方法是创建一个对象并包含您已经拥有的其他对象:
var obj={};
obj.firstName=firstName;
然后你可以做:
console.log(obj[target.id].maxlength)
console.log(obj[target.id].maxlength)