【发布时间】:2017-11-13 20:54:19
【问题描述】:
如果loginDiv 显示为无,我正在尝试重置一些登录的input 字段,但它根本不起作用。
期望的结果:点击登录按钮,只要loginDiv显示为none,两个输入栏就会被重置。
这是我的代码:
// LOGIN
const logDiv = document.getElementById('loginDiv');
const wrong = document.getElementById('wrong');
const user = document.getElementById('user');
const pass = document.getElementById('pass');
const log = document.getElementById('logBtn');
log.addEventListener('click', () => {
if (user.value == 'f' && pass.value == 'f') {
logDiv.style.display = 'none';
wrong.style.display = 'none';
} else {
wrong.style.display = 'block';
}
});
// LOGOUT
const logout = document.getElementById('logout');
logout.addEventListener('click', () => {
if (logDiv.style.display == 'none') {
logDiv.style.display = 'block';
}
});
function resetForm() {
if (logDiv.style.display == 'none') {
user.reset();
pass.reset();
}
}
<div id="loginDiv">
<input id="user" type="text" placeholder="username"></input>
<input id="pass" type="password" placeholder="password"></input>
<button id="logBtn" onclick="resetForm()">login</button>
</div>
<div id="wrong" style="display: none;">
<p id="wrongText">incorrect login info.</p>
</div>
<div id="logoutDiv">
<button id="logout" type="button">logout</button>
</div>
【问题讨论】:
-
display: none实际上是从 DOM 中删除该元素,这意味着 JavaScript 不再有权访问它。考虑到您的字段位于您要删除的 DIV 内,您要实现的目标是不可能的。如果有帮助,您可以使用visibility: hidden获得所需的结果。 -
@ObsidianAge 你错了。设置
display: none不会将其从 DOM 中删除,它只是将 CSSdisplay属性设置为none。
标签: javascript html forms reset