【JavaScript】关于原生js中的事件-Event对象、事件冒泡、鼠标事件、键盘事件

Event对象

<script>
    window.onload = function(){
        document.onclick = function(ev){
            var oEvent = ev || event //为了兼容低版本的ie和火狐
            alert(oEvent.clientX +','+ oEvent.clientY)
        }
        
    }
</script>

事件冒泡

在一个元素上执行事件,事件会逐层向上传递

<body>
    <input type="button" value="点击" id="btn1">
    <div id="div1"></div>
<script>
    window.onload = function(){
        var oDiv = document.getElementById('div1')
        var oBtn = document.getElementById('btn1')
        oBtn.onclick = function(ev){
            var oEvent = ev || event
            oDiv.style.display = 'block'
            oEvent.cancelBubble = true //取消冒泡事件
        }
        document.onclick = function(ev){
            oDiv.style.display = 'none'
        }
    }
</script>

鼠标事件

<body>
    <div id="div1"></div>
<script>
    function getPos(ev) {
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop //可视区的高度 + 滚动高度
        var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
        return pos = {
            x: ev.clientX + scrollTop,
            y: ev.clientY + scrollLeft
        }
    }
    var oDiv = document.getElementById('div1')
    document.onmouseover = function (ev) {
        console.log(9)
        var oEvent = ev || event
        var pos = getPos(oEvent)
        oDiv.style.left = pos.x + 'px'
        oDiv.style.top = pos.y + 'px'
    }
</script>
</body>

鼠标跟随实例

<script>
    function getPos(ev) {
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop 
        var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
        return pos = {
            x: ev.clientX + scrollTop,
            y: ev.clientY + scrollLeft
        }
    }
    document.onmouseover = function (ev) {
        var aDiv = document.getElementsByTagName('div')
        for (var i = aDiv.length - 1; i > 0; i--) { 
            aDiv[i].style.left = aDiv[i - 1].offsetLeft + 'px' //最后一个div跟随前一个div
            aDiv[i].style.top = aDiv[i - 1].offsetTop + 'px'
        }
        var oEvent = ev || event
        var pos = getPos(oEvent)
        aDiv[0].style.left = pos.x + 'px' //第一个div跟随鼠标
        aDiv[0].style.top = pos.y + 'px'
    }
</script>

键盘事件

实例:左右键盘控制元素移动

<script>
    document.onkeydown = function (ev) {
        var oEvent = ev || event
        var oDiv = document.getElementById('div1')
        if (oEvent.keyCode == 37) { //判断为左键
            oDiv.style.left = oDiv.offsetLeft - 10 + 'px'
        } else if (oEvent.keyCode == 39) { //判断为右键
            oDiv.style.left = oDiv.offsetLeft + 10 + 'px'
        }
    }
</script>

实例:ctrl + 回车提交

<script>
    window.onload = function(){
        var oTxt1 = document.getElementById('txt1')
        var oTxt2 = document.getElementById('txt2')
        oTxt1.onkeydown = function(ev){
            var oEvent = ev || event
            if(oEvent.keyCode == 13 && oEvent.ctrlKey){
                oTxt2.value += oTxt1.value+'\n'
                oTxt1.value=''
            }
        }
    }
</script>

ctrl:ctrlKry

shift:shiftKey

alt:altKey

猜你喜欢

转载自blog.csdn.net/meichaoWen/article/details/113100415