JavaScript-DOM之事件

目录

事件三要素

常见的鼠标点击事件

修改元素内容innerText、innerHTML

修改表单元素属性

修改元素样式

事件:得到焦点和失去焦点

显示和隐藏文本框内容

 排他思想

 事件:鼠标经过和鼠标离开


JavaScript使我们有能力创建动态页面,而事件是可以被JS侦测到的行为。

例如:我们声明一个按钮,当用户点击时就会产生点击事件,我们通过对事件的处理,就会对页面产生一些效果。

事件三要素

 三要素:事件源、事件类型、事件处理程序。


<button>点我</button>
<script>
   var button = document.querySelector('button');
   button.onclick = function(){
      alert("hi")
   }
</script>

事件源:button标签
事件类型:onclick 点击事件
事件处理程序:function(){ 处理程序体 }

常见的鼠标点击事件

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

修改元素内容innerText、innerHTML

element.innerText

编写元素内容时拒用html标签,同时空格也和换行也会去掉,只识别文本。

element.innerHTML

编写元素内容时可以使用html标签,同时保留空格和换行。

两者都是可读写的

两者基本使用

<h1>h1</h1>
<h2>h2</h2>
    <script>
      var t = document.querySelector('h1');
      t.innerText = 'innerText';
      var h = document.querySelector('h2');
      h.innerHTML = 'innerHTML'; 
    </script>

 两者不同之处

    <span class="span1"></span><br>
    <span class="span2"></span>
    <script>
      var t = document.querySelector('.span1');
        //innerText:不识别内部标签写法
      t.innerText = '<strong>innerText</strong>  tab';  

      var h = document.querySelector('.span2');
        //innerText:可以识别内部标签写法
      h.innerHTML = '<strong>innerText</strong>'; 
    </script>

效果

修改表单元素属性

DOM可以操作表单属性:type,value,checked,selected,disabled

    <div>点击</div>
    <input type="button" id="button" value="点击">
    <script>
        var div = document.querySelector('div');
        div.onclick = function(){
            div.innerHTML = '被点击了'
        }

        var button = document.querySelector('#button')
        button.onclick = function(){
            // button.innerHTML = '被点击了'; //此方式没有效果
        button.value  = '被点击了'; //表单元素特有的方式

        this.disabled = true;//点击后禁用
        }
    </script>

效果 

 

修改元素样式

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

 element.style  行内样式操作

    <div>点击</div>
    <script>
        var div = document.querySelector('div');
        div.onclick = function(){
           div.style.background = 'lightpink';//点击后改变背景颜色
           div.style.width = '70px';//点击后宽度变为70px
        }
    </script>

效果 

element.className  类名样式操作

<style> 
.sty{
   background-color: lightpink;
   width: 70px;
 }
</style>    
    <div>点击</div>
    <script>
        var div = document.querySelector('div');
        div.onclick = function(){
            this.className = 'sty';//将div元素赋予类sty
        }
    </script>

浏览器元素检测 ,效果与上边一样。

 

说明:

若想保留之前类名,可以选择多类名书写方式

this.clasaName = ‘name1 name2 ’ ; //赋予元素多个类

事件:得到焦点和失去焦点

    <input type="text">
    <script>
        //得到焦点和失去焦点
        var input = document.querySelector('input');
        input.onfocus = function(){
            console.log('获得了焦点');//点击文本框
        }
        input.onblur = function(){
            console.log('失去了焦点');//点击外面,光标消失
        }
    </script>

 

显示和隐藏文本框内容

--->

 需求:点击后,文本框内容:'手机'隐藏。

    <input type="text" value='手机'>
    <script>
        var text = document.querySelector('input');
        //获得焦点事件:onfocus
        text.onfocus = function(){
            if(this.value === '手机'){
                this.value = '';
            }
            this.style.color = '#333';           
        }
        //失去焦点事件:onblur
        text.onblur = function(){
            if(this.value === ''){
                this.value = '手机';
            }
            this.style.color = '#999';
        }
    </script>

 排他思想

需求:点击某个盒子,当前盒子变色,其他为原样式。

 --->

    <div class="init"></div>
    <div></div>
    <div></div>
    <div></div>
    <script>
        var divs = document.querySelectorAll('div')//返回伪数组
        for(var i = 0 ; i < divs.length; i++){
            divs[i].onclick = function(){
                divs[0].className = "";
                for(var j = 0 ; j < divs.length;j++){
                divs[j].style.background = '';
                }
                this.style.background = 'lightpink';  
            }  
        }
    </script>

 事件:鼠标经过和鼠标离开

--->

    <div class="init"></div>
    <div></div>
    <div></div>
    <div></div>
    <script>
        var divs = document.querySelectorAll('div')//返回伪数组
        for(var i = 0 ; i < divs.length; i++){
            divs[i].onmousemove = function(){
                divs[0].className = "";
                for(var j = 0 ; j < divs.length;j++){
                divs[j].style.background = '';
                }
                this.style.background = 'lightpink';  
            }  
        }
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mao.O

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值