美文网首页一句话写作大家园📝(夕雅编)摘星阁
复习笔记之API(2) 事件基础&&排他思想

复习笔记之API(2) 事件基础&&排他思想

作者: 晚月川 | 来源:发表于2020-04-12 11:31 被阅读0次

事件基础

JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为(触发---响应机制)
网页中每个元素都可以产生某些可以触发JavaScript的事件

  • 事件是由三部分组成的:事件源、事件类型、事件处理程序(事件三要素)
    • 事件源:触发事件的对象
    • 事件类型:如何触发,什么事件(鼠标点击、鼠标经过、键盘按下等)
    • 事件处理程序:通过一个函数赋值的方式完成

执行事件的步骤

  • 获取事件源
  • 注册事件(绑定事件)
  • 添加事件处理程序(采用函数赋值形式)

常用的鼠标事件

鼠标事件 触发条件
onclick 鼠标点击左键触发
onmouseover 鼠标经过触发
onmouseout 鼠标离开触发
onfocus 获得鼠标焦点触发
onblur 失去鼠标焦点触发
onmousemove 鼠标移动触发
onmouseup 鼠标弹起触发
onmousedown 鼠标按下触发

操作DOM

JavaScript的DOM操作可以改变网页的内容、结构和样式,我们可以利用DOM操作元素来改变元素里面的内容、属性等

  • 改变元素内容
    • innerText:从起始位置到终止位置的内容,但它除去html标签,同时空格和换行也会去掉
    • innerHTML:从起始位置到终止位置的全部内容,包括html标签,同时保留空格和换行
<button>显示当前系统时间</button>
<div>点击按钮显示系统时间</div>
<p>直接显示系统时间</p>
<script>
    // 点击按钮,div里面显示系统时间
    // 获取元素
    let btn = document.querySelector('button'),
        div = document.querySelector('div');
    // 绑定事件
    btn.onclick = function() {
        div.innerHTML = getDate();
    }
    // 获取当前系统时间
    function getDate() {
        let date = new Date(),
            year = date.getFullYear(),
            month = date.getMonth() + 1,
            dates = date.getDate(),
            arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六',],
            day = date.getDay();
        return '今天是:' + year + '年' + month + '月' + dates + '日' + arr[day];
    }
    // 元素不添加事件
    // 页面加载直接显示当前系统时间
    let p = document.querySelector('p');
    p.innerHTML = getDate();
</script>

innerTextinnerHTML的区别:
这两个属性是可读写的,可以获取元素里面的内容

  • innerText不会识别html标签(非标准),去除换行和空格
  • innerHTML能识别html标签(W3C标准),保留空格和换行

常用元素的属性操作

  1. innerHTMLinnerText改变元素内容
  2. srchref
  3. idalttitle
    <!-- 通过点击按钮变换元素属性样式 -->
    <button id="red">红色</button>
    <button id="blue">蓝色</button>
    <div style="width: 200px; height: 200px; background-color: red;" title="红色"></div>
    <script>
        // 修改元素属性
        // 获取元素
        let red = document.getElementById('red'),
            blue = document.getElementById('blue'),
            div = document.querySelector('div');
        // 绑定事件
        blue.onclick = function () {
            div.style.backgroundColor = 'blue';
            div.title = '蓝色';
        }
        red.onclick = function () {
            div.style.backgroundColor = 'red';
            div.title = '红色';
        }
    </script>

表单元素的属性操作

利用DOM可以操作如下表单元素的属性

  • typevaluecheckedselecteddisabled
<button>点击</button>
<input type="text" value="输入内容">
<script>
    // 获取元素
    let btn = document.querySelector('button'),
        input = document.querySelector('input');
    // 绑定事件  处理程序
    but.onclick = function() {
        // 表单里面的值是通过value来修改的
        input.value = '被点击了';
        // 如果想要某个按钮被禁用,不能再次点击了 用disabled
        // btn.disabled = true;
        this.disabled = true;
        // this指向函数的调用者btn
    }
</script>

样式属性修改

通过JS修改元素的大小、样式和属性

  • element.style 行内样式操作
    • JS里面的样式采取驼峰命名法,例如:fontSizebackgroundColor
    • JS修改style样式操作,产生的是行内样式,权重比较高
  • element.className 类名样式操作
    • 如果操作样式比较多,可以采取操作类名方式更改元素样式
<div style="width:100px; height:100px; background-color:wheat;">文本</div>
<script>
    // 使用 element.style 获得修改属性样式
    let div = document.querySelector('div');
    div.onclick = function() {
        this.style.backgroundColor = 'purple';
        this.style.fontSize = '20px';
        this.style.color = '#fff';
        this.style.marginTop = '100px';
    }
</script>
<!-- 使用另一种方法修改添加属性比较简单,可以设置一个类名,然后在点击div的时候,把类名赋给它 -->
<!-- 简单地说:可以通过修改元素的类名来修改元素样式 -->

获得焦点onfocus、失去焦点onblur

<input type="text" value="手机">
<script>
    let inp = document.querySelector('input');
    inp.onfocus = function() {
        // 获得焦点
        // 获得焦点的时候,如果里面的值是手机则清空里面的内容
        if(this.value =='手机'){
            this.value = '';
        }
    }
    inp.onblur = function() {
        // 失去焦点
        // 失去焦点的时候如果内容为空,则改为默认值‘手机’
        if(this.value ==''){
            this.value = '手机';
        }
    }
</script>

排他思想

如果有同一组元素,我们要实现某一个元素的某种样式,需要用到循环的排他思想算法:

  • 所有元素全都清除掉默认样式(干掉其他人)
  • 给当前元素设置样式(留下自己)
  • 注:顺序不能颠倒,首先排除其他人,再设置自己的样式
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>

<script>
    let btns = document.querySelectorAll('button');
    for(let i = 0; i < btns.length; i++) {
        btns[i].onclick = function() {
            for(let i = 0; i < btns.length; i++) {
                btns[i].style.backgroundColor = '';
            }
            this.style.backgroundColor = 'blue';
        }
    }
</script>

相关文章

  • 复习笔记之API(2) 事件基础&&排他思想

    事件基础 JavaScript使我们有能力创建动态页面,而事件是可以被JavaScript侦测到的行为(触发---...

  • 复习笔记之API(8) 鼠标事件&&键盘事件

    常用的鼠标事件补充 禁止鼠标右键菜单 contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认...

  • 复习笔记之API(6) DOM事件流

    DOM事件流 事件流描述的是从页面中接收事件的顺序(DOM事件流就是事件的传播过程)事件发生时会在元素节点之间按照...

  • JS之排他思想

    干掉所有人,留下我自己 HTML 按钮1 按钮2 按钮3 按钮4 JS 1.先获取所有按钮元素let b...

  • JavaScript ☞ day3

    JavaScript基础学习笔记之JavaScript进阶 焦点事件 鼠标事件-单击与双击 鼠标事件-mouseo...

  • 排他思想

    先清空所有的,然后单独设置当前; 基于 for 循环来实现的排他思想;

  • 排他思想

    排他 p {width: 100px;height: 100px;back...

  • 排他思想

    排他思想

  • 复习笔记之API(5) 事件高级&&监听事件引入

    事件高级 给元素添加事件,称为注册事件或绑定事件;注册事件有两种方式:传统方式和方法监听注册方式 传统注册方式以o...

  • 数学学习参考

    1、每天做好2本册子,即复习笔记和错题集。 建议做复习笔记,课前记录自己复习的心得,然后在课上以此笔记作基础补充上...

网友评论

    本文标题:复习笔记之API(2) 事件基础&&排他思想

    本文链接:https://www.haomeiwen.com/subject/yrzmmhtx.html