javascript案例隐藏密码--有关元素选取的问题

源代码为:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <style>

        .box {

            position: relative;

            width: 400px;

            border-bottom: 1px solid #ccc;

            margin: 100px auto;

        }

        

        .box input {

            width: 370px;

            height: 30px;

            border: 0;

            outline: none;

        }

        

        .box img {

            position: absolute;

            top: 2px;

            right: 2px;

            width: 24px;

        }

    </style>

</head>

<body>

    <div class="box">

        <label for="">

            <img src="https://q.cnblogs.com/q/130179/images/close.png" alt="" id="eye">

        </label>

        <input type="password" name="" id="pwd">

    </div>

    <script>

        // 1. 获取元素

        var eye = document.getElementById('eye');

        var pwd = document.getElementById('pwd');

        // 2. 注册事件 处理程序

        var flag = 0;

        eye.onclick = function() {

            // 点击一次之后, flag 一定要变化

            if (flag == 0) {

                pwd.type = 'password';

                eye.src = 'images/open.png';

                flag = 1; // 赋值操作

            } else {

                pwd.type = 'text';

                eye.src = 'images/close.png';

                flag = 0;

            }

        }

    </script>

</body>

</html>

由于自己更习惯用类选择器,所以想,为什么不能改用类选择器呢?遂做了以下修改:

   <div class="box">

        <label for="">

            <img src="https://q.cnblogs.com/q/130179/images/close.png" alt="" class="eye">

        </label>

        <input type="password" name="" class="pwd">

    </div>

    <script>

        // 1. 获取元素

        var eye = document.querySelector('.eye');

        var pwd = document.querySelector('.pwd');

但是进入浏览器预览后,发现一个非常奇怪的现象:隐藏按钮要多点一次输入的文本才会变化,结果导致隐藏和显示的功能反过来了。
javascript案例隐藏密码--有关元素选取的问题

这到底是怎么回事?

回答

你默认是password,type=0

判断还是type为0input类型编password,写反了

改一下试一下

if (flag == 0) {

pwd.type = 'text';

eye.src = 'images/open.png';

flag = 1; // 赋值操作

} else {

pwd.type = 'password';

eye.src = 'images/close.png';

flag = 0;

}

以上是 javascript案例隐藏密码--有关元素选取的问题 的全部内容, 来源链接: utcz.com/a/66147.html

回到顶部