3、JS-DOM:操作元素(元素内容、元素属性、表单元素、元素样式、循环精灵图、用户注册密码长度验证)

 

1、改变元素内容:

①、element.innerText:不能识别HTML标签,同时也会去除空格和换行:非标准

var box = document.querSelector('div');

box.innerHTML = ‘<strong> 今天是:</strong>’

②、element.innerHTML:识别HTML标签,保留空格和换行:标准  :(这个只能用于普通元素内容,表单内容不可使用)

③、这两个属性都是可读写的,不仅可以改变元素内容,也可以获取元素里面内容:

<p>
    123
    <span>23</span>
</p>

  

var p = document.querSelector('p');

log(p.innerHTML);

 

    123
    <span>23</span>


 2、修改元素属性:src、href、id、alt、title等

      操作元素之分时案例

    <img src="images/s.jpg" alt="">
    <div>亲,下午好。</div>
    <script>
        var img = document.querySelector('img');
        var div = document.querySelector('div');
        // 得到当前系统时间
        var date = new Date();
        var h = date.getHours();
        // 判断时间并根据时间显示不同图片和文字信息
        if (h < 12) {
            img.src = 'images/s.jpg';
            div.innerHTML = '亲,上午好';
        } else if (h < 18) {
            img.src = 'images/x.jpg';
            div.innerHTML = '亲,下午好';
        } else {
            img.src = 'images/w.jpg';
            div.innerHTML = '亲,晚上好';
        }
    </script>

  

3、操作表单元素属性:type、value、checked、selected、disabled等

    <button>按钮</button>
    <input type="text" name="" id="" value="输入内容">
    
    <script>
        var btn = document.querySelector('button');
        var input = document.querySelector('button';)

        btn.onclick = function() {
        // 不能使用 innerHTML来改变内容。它只适用于普通元素 input.value = '被点击了'; // disabled 表示这个表单被禁用,不能再被点击了。 // btn.disabled = true; // this指向的是事件函数的调用者 btn this.disabled = true; } </script>

  

4、操作元素案例:显示隐藏密码(改变文本框类型)

 

        var pas = document.getElementById('pas');
        var btn = document.getElementById('btn');

        // 利用flag变量。通过判断变量值,来切换文本框类型
        var flag = 0;
        btn.onclick = function () {
            if (flag == 0) {
                pas.type = 'text';
                btn.innerHTML = '隐藏';
                flag = 1;
            } else {
                pas.type = 'password';
                btn.innerHTML = '显示';
                flag = 0;
            }
        }
    </script>

 

5、操作元素样式:元素大小、颜色、位置、显示隐藏等样式

注意点:

a、js里面的样式采取驼峰命名法。

b、js修改的样式是行内样式,权重比较高。

  ①、element.style  行内样式操作:适用于样式比较少的时候

<script>
             var div = document.querySelector('div');

        div.onclick = function() {
            // style 就是样式属性
            this.style.backgroundColor = 'purple';
            // 注意带单位
            this.style.width = '250px';

       // this.style.display = 'none'; 显示隐藏 } </script>

  

  ②、element.className  类名样式操作适用于一次修改多个样式

a、原理:现在css里面写好一个类,然后通过这个方法添加这个类到元素中去。

b、代码:

<style>
    .change {
        width: 100px;
        height: 200px;
        color:red;
        fong-size:14px;
}
</style>

<body>

<div class='first'> </div>

<script>
    var test = document.querySelector('div');
    
    text.onclick = function() {
// 将 写好的 change 这个类 加到 元素中去 this.className = 'change';

    // 上面写法会覆盖原有的类,如何保留原有的类
         this.className = 'first change';
}
</script>

</body>

  

 

 

6、循环精灵图:我们使用css精灵图时,每个li都要设置位置,非常麻烦,使用js可以大大简化代码:

①、要求:精灵图必须是有规律的,无规律的不能使用。

    <div class="box">
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>

    <script>
        var lis = document.querySelectorAll('li');

        for (var i = 0; i < lis.length; i++) {
            // 让索引号 乘以 44 就是每个 li 的背景 y 坐标,index就是我们的y坐标
            var index = i * 44;
            // 注意 0 后面的负号
            lis[i].style.backgroundPosition = '0 -' + index + 'px';
        }
    </script>

 

7、获得焦点、失去焦点案例:onfocus、onblur

    <script>
        window.onload = function () {
            var user = document.getElementById('user');
            var pas = document.getElementById('password');

            // onfocus 获得焦点事件:
            user.onfocus = function () {
                if (this.placeholder === '会员名/邮箱/手机号') {
                    this.placeholder = '';
                }
            }
            // obblur 失去焦点事件
            user.onblur = function () {
                if (this.placeholder === '') {
                    this.placeholder = '会员名/邮箱/手机号';
                }
            }

            pas.onfocus = function () {
                if (this.placeholder === '请输入登录密码') {
                    this.placeholder = '';
                }
            }
            pas.onblur = function () {
                if (this.placeholder === '') {
                    this.placeholder = '请输入登录密码';
                }
            }
        }
    </script>

  

  

8、用户注册密码输入验证:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 510px;
            height: 120px;
            border: 1px solid pink;
            margin: 100px auto;
        }

        .num {
            float: left;
        }

        .check {
            float: left;
            display: none;
        }

        .tips {
            font-size: 12px;
            margin: 2px;
            float: left;
        }

        .right {
            width: 15px;
            height: 15px;
            float: left;
            background-color: pink;
            margin-left: 5px;
            margin-top: 4px;
            background: url('images/reg_ico_ie6.png') no-repeat 0 0;
        }

        .err {
            width: 15px;
            height: 15px;
            float: left;
            background-color: pink;
            margin-left: 5px;
            margin-top: 4px;
            background: url('images/reg_ico_ie6.png') no-repeat -60px 0;
            color: red;
        }

        .pass {
            width: 15px;
            height: 15px;
            float: left;
            background-color: pink;
            margin-left: 5px;
            margin-top: 4px;
            background: url('images/reg_ico_ie6.png') no-repeat -30px 0;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="tel">
            <div class="num">
                手机号码:<input type="text" name="" id="telnum">
            </div>
            <div class="check">
                <span class="right" id="icon"></span>
                <p class="tips">请使用11位数字,海外用户请使用邮箱注册</p>
            </div>
        </div>
    </div>

    <script>
        var telnum = document.getElementById('telnum');
        var check = document.querySelector('.check');
        var icon = document.getElementById('icon');
        var tips = document.querySelector('.tips');

        telnum.onfocus = function () {
            check.style.display = 'block';
            // 表单再次获得焦点的时候,重新显示原始图标;不写这个的话,再次获得焦点,还是那个错误提示
            icon.className = 'right';
            tips.innerHTML = '请使用11位数字,海外用户请使用邮箱注册'
        }

        telnum.onblur = function () {
            // input里面的值是 value,不是用innerHTML
            if (this.value === '' || this.value.length != 6) {
                icon.className = 'err';
                tips.innerHTML = '请输入手机号码';
            } else {
                icon.className = 'pass';
                tips.innerHTML = '';
            }
        }

    </script>
</body>

</html>

  

 

posted @ 2021-03-08 22:28  Y字仇杀队  阅读(90)  评论(0编辑  收藏  举报