WebAPIs-第01天笔记(二)

简介: WebAPIs-第01天笔记(二)

1.5.2. 元素的常用属性操作


  1. innerText,innerHTML 改变元素内容
  2. src , href
  3. Id,alt,title


获取属性的值

元素对象.属性名


设置属性的值

元素对象.属性名 = 值


<body>
    <div title="刘德华" id="test">
        操作元素属性的值 以title为例
    </div>
    <script>
        // 操作元素属性的值 以title为例
        // 1. 获取
        // element.属性
        var div = document.querySelector('div')
        console.log(div.id);
        console.log(div.title);
        console.dir(div);
        // 2.设置
        // element.属性 = 'XXXXX'
        div.title = '刘德华刘德华刘德华刘德华刘德华'
    </script>
</body>


案例代码–点击按钮,切换图片

<body>
    <button id="ldh">刘德华</button>
    <button id="zxy">张学友</button> <br>
    <img src="images/ldh.jpg" alt="" title="刘德华">
    <script>
        // 实现效果:点击按钮,切换图片
        // 修改元素属性  src
        // 1. 获取元素
        var ldh = document.querySelector('#ldh');
        var zxy = document.getElementById('zxy');
        var img = document.querySelector('img')
        // 2. 注册事件 处理程序
        ldh.onclick = function() {
            img.src = 'images/ldh.jpg'
            img.title = '刘德华'
        }
        zxy.onclick = function() {
            img.src = 'images/zxy.jpg'
            img.title = '张学友'
        }
    </script>
</body>


1.5.3. 案例:分时问候

0e2bbd9725c94f8c819ec8d5643ee82c.png

39876d912bc1431b9a0f72fdeeca7dfe.png


// 1.获取元素
var img = document.querySelector('img');
var div = document.querySelector('div');
// 2.获取当前小时数
var h = (new Date()).getHours();
// 3.做判断
if (h<12) {
  img.src = 'images/s.gif'
  div.innerHTML = '大家上午好,好好写代码'
} else if (h<18) {
  img.src = 'images/x.gif'
  div.innerHTML = '大家x午好,好好写代码'
} else {
  img.src = 'images/w.gif'
  div.innerHTML = '大家晚上好,好好写代码'
}


1.5.4. 表单元素的属性操作

2d7ed8da5ee74947a3d22a7128ca9fcf.png


获取属性的值

元素对象.属性名


设置属性的值

元素对象.属性名 = 值

表单元素中有一些属性如:disabled、checked、selected,元素对象的这些属性的值是布尔型。


案例代码

<body>
    <button>按钮</button>
    <input type="text" value="输入内容">
    <script>
        // 实现效果:点击按钮 input的内容显示成被点击了
        // 操作元素之表单属性(value/disabled/checked/selected)
        // 1. 获取元素
        var btn = document.querySelector('button');
        var input = document.querySelector('input');
        // 2.事件绑定
        btn.onclick = function () {
            // input.innerHTML = '被点击了' // innerHTML 给普通标签用的
            // 表单里的值是通过 value 来改变的
            input.value = '被点击了'
            //  表单(button按钮)禁用 disabled = true
            // btn.disabled = true;
            // this 指向函数调用者 btn
            this.disabled = true;
        }
        // q1: 表单里的值是通过谁来改变的???value
        // q2: 表单(button按钮)禁用可以用什么属性???disabled
    </script>
</body>


1.5.5. 案例:仿京东显示密码

65a330f4436f42718ae167e813173912.png

45727a5eab904c888b6eaa5c792daa38.png

<body>
    <div class="box">
        <label for="">
            <img id="ele" src="./images/close.png" alt="" srcset="">
        </label>
        <input type="password" name="" id="pwd" class="">
    </div>
    <script>
        // 1.获取元素
        var ele = document.getElementById('ele');
        var pwd = document.getElementById('pwd');
        // 2.注册事件
        var flag = 0
        ele.onclick = function() {
            // 点击一次之后, flag 一定要变化
            if (flag == 0) {
                ele.src = 'images/open.png'
                pwd.type = 'text'
                flag = 1 // 赋值操作
            } else {
                ele.src = 'images/close.png'
                pwd.type = 'password'
                flag = 0
            }
        }
    </script>
</body>


1.5.6. 样式属性操作


我们可以通过 JS 修改元素的大小、颜色、位置等样式。


常用方式

3412022cd5b94d2e85930603afed20fc.png


方式1:通过操作style属性


元素对象的style属性也是一个对象!

元素对象.style.样式属性 = 值;


注意:


  1. JS 里面的样式采取驼峰命名法 比如 fontSize、 backgroundColor
  2. JS 修改 style 样式操作,产生的是行内样式,CSS 权重比较高


案例代码

<body>
    <div style="width: 250px; height:250px" class="test"></div>
    <script>
        // 样式属性操作
        // 常用的两种方式:element.style / element.className
        // 用法两种:1.取值 2.设置值
        // var div = document.querySelector('div')
        // console.log(div.style.width); // 250px 取的是行内样式
        // div.style.width = '400px'; // 设置值的必须带上单位
        // console.log(div.className); // 'test'
        // div.className = 'test1'; // 如何赋值 会直接覆盖 原有的值
        // 1.获取元素
        var div = document.querySelector('div')
        // 2.注册事件 处理程序
        div.onclick = function () {
            // 注意这个属性 采用驼峰写法
            this.style.backgroundColor = 'purple'
            this.style.width = '250px'
        }
        // 需求:点击盒子,盒子背景颜色改成紫色,宽度变成200
    </script>
</body>

df945ea8f5864817a3e5fe4fdf7266f6.png

<body>
    <div class="box">
        淘宝二维码
        <img src="images/tao.png" alt="">
        <i class="close-btn">×</i>
    </div>
    <script>
        // 例子效果:点击关闭按钮 关闭淘宝的二维码
        // 1. 获取元素 
        var closeBtn = document.querySelector('.close-btn');
        var box =document.querySelector('.box');
        // 2.注册事件 程序处理
        closeBtn.onclick = function() {
            box.style.display = 'none'
        }
    </script>
</body>


案例:循环精灵图背景

c3d3d50012204bc698297d4f43932164.png

c79661840e914c3d804633c4ff66cdc0.png


<body>
    <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>
        // 1. 获取元素 所有的小li 
        var lis = document.querySelectorAll('li');
        for (var i = 0; i < lis.length; i++) {
            // 让索引号 乘以 44 就是每个li 的背景y坐标  index就是我们的y坐标
            var index = i * 44;
            lis[i].style.backgroundPosition = '0 -' + index + 'px';
        }
    </script>
</body>


案例:显示隐藏文本框内容

49f5639955354e029e36079a0e0e8fae.png

ee6bba9664f0491aaf43144b1a62b9c5.png


<body>
    <input type="text" value="手机">
    <script>
        // 获得焦点事件 onfocus  失去焦点事件 onblur
        // 1.获取元素
        var input = document.querySelector('input');
        // 2.注册事件
        input.onfocus = function () {
            if (this.value === '手机') {
                this.value = ''
            }
            // 获得焦点需要把文本框里面的文字颜色变黑
            this.style.color = '#333'
        }
        input.onblur = function () {
            if (this.value === '') {
                this.value = '手机'
            }
            // 失去焦点需要把文本框里面的文字颜色变浅色
            this.style.color = '#999'
        }
    </script>
</body>


方式2:通过操作className属性

元素对象.className = 值;

因为class是关键字,所以使用className。


d24c3c016f60431689a2018b33298270.png


案例代码

<body>
    <div class="first">文本</div>
    <script>
        // 1. 使用 element.style 获得修改元素样式  如果样式比较少 或者 功能简单的情况下使用
        var test = document.querySelector('div');
        test.onclick = function() {
            // this.style.backgroundColor = 'purple';
            // this.style.color = '#fff';
            // this.style.fontSize = '25px';
            // this.style.marginTop = '100px';
            // 2. 我们可以通过 修改元素的className更改元素的样式 适合于样式较多或者功能复杂的情况
            // 3. 如果想要保留原先的类名,我们可以这么做 多类名选择器
            // this.className = 'change';
            this.className = 'first change';
        }
    </script>
</body>


案例:密码框格式提示错误信息

47d3b9cc22964466b4ee85995dd7fc96.pngec674871cd204808ac02eccc046e7f51.png


<body>
    <div class="register">
        <input type="password" class="ipt">
        <p class="message">请输入6~16位密码</p>
    </div>
    <script>
        // 首先判断的事件是表单失去焦点 onblur
        // 如果输入正确则提示正确的信息颜色为绿色小图标变化
        // 如果输入不是6到16位,则提示错误信息颜色为红色 小图标变化
        // 因为里面变化样式较多,我们采取className修改样式
        // 1.获取元素
        var ipt = document.querySelector('.ipt');
        var message = document.querySelector('.message');
        //2. 注册事件 失去焦点
        ipt.onblur = function() {
            // 根据表单里面值的长度 ipt.value.length
            if (this.value.length < 6 || this.value.length > 16) {
                // console.log('错误');
                message.className = 'message wrong';
                message.innerHTML = '您输入的位数不对要求6~16位';
            } else {
                message.className = 'message right';
                message.innerHTML = '您输入的正确';
            }
        }
    </script>
</body>


1.6. 今日总结

6a909cb04528441897702936f3aaa0c0.png

目录
相关文章
|
C++
学习C++笔记398
C++ 多线程
91 0
|
C++
学习C++笔记396
C++ 多线程
105 0
|
C++
学习C++笔记387
C++ 预处理器
85 0
|
C++
学习C++笔记354
C++ 动态内存
111 0
|
iOS开发 C++
学习C++笔记325
C++ 文件和流
99 0
|
存储 编译器 C++
学习C++笔记303
C++ 多态
103 0
|
C++ 数据库管理
学习C++笔记290
C++ 继承
93 0
|
数据安全/隐私保护 C++
学习C++笔记280
C++ 类 & 对象
92 0
|
C++
学习C++笔记261
C++ 数据结构
85 0
|
C++
学习C++笔记233
C++ 指针
109 0

热门文章

最新文章

下一篇
开通oss服务