事件对象——JS

事件对象简单介绍

事件对象: 当事件的响应函数被触发时,浏览器每次都会将一个事件对象作为实参传递进响应函数.
在事件对象中封装了当前事件相关的一切信息,比如:鼠标的坐标键盘哪个按键被按下鼠标滚轮滚动的方向……
在这里插入图片描述

验证:

 areaDiv.onmousemove = function(event){
            alert(event);
            // alert("我移动了");
        }

输出:
在这里插入图片描述

实例一:实现鼠标位置的记录

onmousemove:该事件将会在鼠标在元素中移动时被触发。

eg:
实现:记录鼠标位置:
效果:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        #areaDiv{
            height: 200px;
            width: 500px;
            border: rosybrown 1px solid;
        }
        #showMsg{
            height: 100px;
            width: 500px;
            border: rosybrown 1px solid;
            line-height: 100px;/*值与父元素高度相等*/
            text-align: center;
        }
    </style>
    <script>
        window.onload = function(){
        var areaDiv = document.getElementById("areaDiv");
        var showMsg = document.getElementById("showMsg");

        areaDiv.onmousemove = function(event){
            // alert(event);
            // alert("我移动了");
            /*
            clientX:获取事件的水平座标
            clientY:获取事件的垂直座标
            */
           var x = event.clientX;
           var y = event.clientY;
           showMsg.innerHTML = "x="+x+", y="+y;

        }
        }
        

    </script>
</head>
<body>
   <div id="areaDiv"></div>
   <br>
   <div id="showMsg"></div> 
    
</body>
</html>

问题:IE8及以下不支持event,IE8的event表达方式:window.event;
所以手动判断:

    <script>
        window.onload = function(){
        var areaDiv = document.getElementById("areaDiv");
        var showMsg = document.getElementById("showMsg");

        areaDiv.onmousemove = function(){

            if(!event){
                event = window.event;
            }
           var x = event.clientX;
           var y = event.clientY;
           showMsg.innerHTML = "x="+x+", y="+y;

        }
        }
    </script>

实例二:div跟随鼠标移动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        #box1{
            width: 100px;
            height: 100px;
            background-color: rosybrown;
            /* 开启定位才能移动 */
            position: absolute;
        }
    </style>
    <script>
        window.onload = function(){
            var box1 = document.getElementById("box1");
            // 直接绑定给doument
            document.onmousemove =function(event){
                event = event || window.event;
                
                // 鼠标坐标
                /*
                使用clientX,有一个问题,clientX是相对于可见窗口的,
                所以鼠标也就相对于可见窗口,而div是相对于整个网页的,
                两者相对点不一样这就导致当夜页面下移的时候出现位差,
                所以应该使用相对于网页的pageX
                */
                // var left = event.clientX;
                // var top = event.clientY;
                var left = event.pageX;
                var top = event.pageY;
                
                //设置 box1的位置
                box1.style.left = left +"px";
                box1.style.top = top+ "px";

            }

        }

    </script>
  
</head>
<body style="height: 1000px;">
    <div id = "box1"></div>
    
</body>
</html>

效果:
在这里插入图片描述
问题:
IE8不支持pageX;
解决:通过计算改变距离。

完整实现:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        #box1{
            width: 100px;
            height: 100px;
            background-color: rosybrown;
            /* 开启定位才能移动 */
            position: absolute;
        }
    </style>
    <script>
        window.onload = function(){
            var box1 = document.getElementById("box1");
            // 直接绑定给doument
            document.onmousemove =function(event){
                event = event || window.event;
                // 获取滚动条滚动距离
                // 滚动条是谁的?火狐认为是html的,chrome认为是body的
                // var scrollTop = document.body.scrollTop;
                // html:document.documentElement
                // var scrollTop = document.documentElement.scrollTop;
                var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
                var scrollLeft = document.body.scrollLeft||document.documentElement.scrollLeft;
            
                var left = event.clientX+scrollLeft;
                var top = event.clientY+scrollTop;
                
                //设置 box1的位置
                box1.style.left = left +"px";
                box1.style.top = top+ "px";

            }

        }

    </script>
  
</head>
<body style="height: 1000px;width: 2000px;">
    <div id = "box1"></div>
    
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 字符串对象JavaScript中的一种数据类型,用于表示文本数据。字符串对象可以包含任何字符,包括字母、数字、符号和空格等。在JavaScript中,字符串对象是不可变的,也就是说一旦创建就不能修改。但是可以通过一些方法来操作字符串对象,如拼接、截取、替换等。常见的字符串方法有concat()、slice()、replace()等。掌握字符串对象的使用可以帮助我们更好地处理文本数据。 ### 回答2: JavaScript字符串对象是一个在JavaScript中非常重要的事物。JavaScript字符串对象可以帮助我们在JavaScript编程中进行文本操作。通过了解字符串对象,可以使我们更有效地处理字符串数据,并让我们的代码更加强大。 JavaScript中的字符串对象具有很多方法和属性,可以帮助我们对字符串进行各种操作。以下是一些常用的字符串对象方法: 1. length属性:返回字符串的长度。 2. charAt()方法:返回指定索引位置的字符。 3. concat()方法:连接两个或多个字符串。 4. slice()方法:提取字符串的一部分,并返回一个新字符串。 5. substr()方法:从指定位置开始提取长度为指定的字符。 6. replace()方法:替换字符串中的指定文本。 7. split()方法:将字符串转换为数组。 8. toLowerCase()方法:将字符串转换为小写。 9. toUpperCase()方法:将字符串转换为大写。 在JavaScript中处理字符串非常重要,因为在处理表单、验证用户输入等方面都需要使用到字符串。字符串对象也是最常用的JavaScript对象之一,因此熟悉JavaScript字符串对象将有助于提高程序的效率和简洁性。 需要特别注意字符串是不可修改的,一旦创建了一个字符串对象,就无法修改它的值。所以,任何字符串的修改操作都将返回一个新的字符串。 在编写程序时,应根据需要选择适当的字符串操作方法和属性。例如,在向用户显示错误消息时,可能需要使用charAt()方法或slice()方法来提取并显示错误消息中的第一个字符或前几个字符。或者,在对用户输入进行验证时,可以使用indexOf()方法或search()方法来检查输入的字符串中是否包含特定的字符或字符串。 总之,JavaScript字符串对象是处理JavaScript编程中文本数据的重要工具。通过了解字符串对象的各种方法和属性,可以更加有效和灵活的处理和操纵字符串数据。 ### 回答3: JavaScript中的字符串对象是一个字符串值的表示。它提供了对字符串值的访问和操作。JavaScript字符串是Unicode字符串,因此它们可以包含任何Unicode字符(包括多字节字符)。 字符串对象的主要方法有: 1. charAt()方法-返回指定索引的字符。该索引是基于零的。例如: var str = "hello world"; console.log(str.charAt(1)); //输出e 2. concat()方法-将一个或多个字符串连接到原始字符串,并返回新字符串。例如: var str1 = "hello "; var str2 = "world"; var newStr = str1.concat(str2); console.log(newStr); //输出hello world 3. indexOf()方法-返回第一个匹配的字符索引。如果没有找到匹配项,则返回-1。例如: var str = "hello world"; console.log(str.indexOf("world")); //输出6 4. lastIndexOf()方法-返回最后一个匹配的字符索引。如果没有找到匹配项,则返回-1。例如: var str = "hello world"; console.log(str.lastIndexOf("l")); //输出9 5. replace()方法-替换字符串中的字符。例如: var str = "hello world"; console.log(str.replace("world", "everyone")); //输出hello everyone 6. slice()方法-从字符串中提取指定的字符。例如: var str = "hello world"; console.log(str.slice(0, 5)); //输出hello 7. split()方法-将字符串拆分为子字符串,并返回一个数组。例如: var str = "hello world"; console.log(str.split(" ")); //输出["hello", "world"] 字符串对象JavaScript中最常用的对象之一。它提供了许多方法,可以让您对字符串执行各种操作,包括搜索、提取和更改字符。熟练掌握这些方法,可以使您在JavaScript中更有效地处理字符串值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值