仅使用 Javascript 显示/隐藏单击按钮的密码
我想在仅使用 Javascript 单击眼睛图标时创建密码切换功能.我已经为它编写了代码,但它仅用于显示密码文本而不是相反.谁能看到下面代码中的逻辑错误.
I want to create password toggle function when clicked on the eye icon using Javascript only. I have written code for it but it works only to show the password text and not the other way round. Can someone see the logic error in the code below.
function show() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'text');
}
function hide() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'password');
}
function showHide() {
var pwShown = 0;
document.getElementById("eye").addEventListener("click", function() {
if (pwShown == 0) {
pwShown = 1;
show();
} else {
pwShow = 0;
hide();
}
}, false);
}
<input type="password" placeholder="Password" id="pwd" class="masked" name="password" />
<button type="button" onclick="showHide()" id="eye">
<img src="eye.png" alt="eye"/>
</button>
推荐答案
每次单击按钮时,您都会绑定单击事件.您不想要多个事件处理程序.另外,您在每次点击时重新定义 var pwShown = 0
,因此您永远无法恢复输入状态(pwShown
保持不变).
You are binding click event every time you click a button. You don't want multiple event handlers. Plus you are redefining var pwShown = 0
on every click so you can never revert input state (pwShown
stays the same).
移除 onclick 属性并与 addEventListener 绑定点击事件:
Remove onclick attribute and bind click event with addEventListener:
function show() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'text');
}
function hide() {
var p = document.getElementById('pwd');
p.setAttribute('type', 'password');
}
var pwShown = 0;
document.getElementById("eye").addEventListener("click", function () {
if (pwShown == 0) {
pwShown = 1;
show();
} else {
pwShown = 0;
hide();
}
}, false);
<input type="password" placeholder="Password" id="pwd" class="masked" name="password" />
<button type="button" id="eye">
<img src="https://cdn0.iconfinder.com/data/icons/feather/96/eye-16.png" alt="eye" />
</button>
相关文章