当前位置:   article > 正文

JavaScript入门 事件简介/事件对象位置属性 /鼠标事件/表单事件/键盘事件/浏览器相关事件/焦点事件/触摸事件 Day12_document.ontouchend

document.ontouchend

JavaScript事件简介


什么叫事件

 当点击一个按钮的时候,会弹出一个对话框。在JavaScript中,
点击”这个事情就看作一个事件。“弹出对话框”其实就是我们在点击事件中做的一些事。

事件三要素

事件源  -触发事件的元素    ->如 按钮

事件类型  -事件如何触发:点击、双击、移动等等   ->如 click点击事件

事件处理函数    -事件可以做什么

<button>按钮</button>   //事件源
  1. var btn = document.querySelector('button')
  2. btn.onclick = function(){ //onclick事件类型
  3. lert('弹出内容') //function() 事件函数
  4. }

事件对象event


什么是事件对象 

处理事件与事件相关的

如何创建

由系统创建,当触发事件时,自动生成一个事件对象 duix 

获取事件对象

 在事件处理函数中获取名为event的事件对象

更改事件对象名

事件处理函数定义一个形参用来接受事件对象

事件对象兼容性

IE浏览器:e = e || window.event

<button>按钮</button>
  1. var btn = document.querySelector('button')
  2. btn.onclick = function (e) { // e=event e是形参 可以写成任何名字
  3. e = e || window.event // 兼容ie写法 e = e相当于给event重命名
  4. console.log(e)
  5. }

事件对象位置属性


相对元素自身坐标(点击的元素)offsetX,offsetY

相对于浏览器窗口(clientX,clientY) //就是点击位置距离浏览器窗口的位置

相对于页面(pageX,pageY)    //滑动的位置也算在其中

<div></div>
  1. var divEle = document.querySelector('div')
  2. /*
  3. 绑定点击事件
  4. 1.事件源 div元素
  5. 2.事件类型 事件类型名click
  6. 3.事件处理函数
  7. 事件对象 event
  8. */
  9. divEle.onclick = function(e){
  10. e = e || window.event // 获取事件对象
  11. console.log('offsetX :',e.offsetX, ' offsetY :',e.offsetY) // 相对自身坐标
  12. console.log('clientX :',e.clientX, ' clientY :',e.clientY) // 相对浏览器窗口
  13. console.log('pageX :',e.pageX, ' pageY :',e.pageY) // 相对页面窗口
  14. }
  1. *{padding: 0;margin: 0;}
  2. div{
  3. width: 200px;
  4. height: 1200px;
  5. background-color: skyblue;
  6. margin: 100px;
  7. }

常见的事件 


 鼠标事件**

mouseover 鼠标移入   

mouseout 鼠标移出   

mousemove 鼠标移动 

.onmouseover/.onmouseout/ .onmousemove = function(){}

<div>前端编程</div>
  1. /*
  2. 鼠标移入div区块,字体颜色变为红色
  3. 复杂问题简化
  4. 分解:
  5. 1. 鼠标移入div区块
  6. div.onmouseover = function(){
  7. 改变字体颜色
  8. }
  9. 2. 字体颜色变为红色
  10. div.style.color = 'red'
  11. */
  12. var divEle = document.querySelector('div')
  13. // 鼠标移入
  14. divEle.onmouseover = function(){
  15. divEle.style.color = 'red'
  16. }
  17. // 鼠标移出
  18. divEle.onmouseout = function(){
  19. divEle.style.color = 'blue'
  20. }
  21. // 鼠标移动
  22. divEle.onmousemove = function(e){
  23. // 事件对象
  24. e = e || window.event
  25. //打印鼠标(光标)位置
  26. console.log(e.offsetX, e.offsetY)
  27. }
  1. *{padding: 0;margin: 0;}
  2. div{
  3. width: 200px;
  4. height: 40px;
  5. background-color: skyblue;
  6. text-align: center;
  7. line-height: 40px;
  8. color: blue;
  9. }


  1. *{padding: 0;margin: 0;}
  2. div{
  3. width: 500px;
  4. height: 500px;
  5. background-color: skyblue;
  6. margin: 100px;
  7. position: relative;
  8. }
  9. p{
  10. position: absolute;
  11. width: 100px;
  12. height: 100px;
  13. background-color: pink;
  14. text-align: center;
  15. line-height: 100px;
  16. display: none; /*隐藏 */
  17. /*鼠标移入元素 事件不起作用 解决闪动问题*/
  18. pointer-events: none;
  19. }
  1. <div>
  2. <p>提示信息</p>
  3. </div>

小块随鼠标移动案例

  1. /*
  2. 鼠标移入div显示p区域
  3. */
  4. var divEle = document.querySelector('div')
  5. var pEle = document.querySelector('p')
  6. divEle.onmouseover = function(){
  7. pEle.style.display = 'block'
  8. }
  9. /*
  10. 移出隐藏
  11. */
  12. divEle.onmouseout = function(){
  13. pEle.style.display = 'none'
  14. }
  15. /*
  16. p小区块随光标在大区块div中移动
  17. 获取光标位置坐标赋值给小区块
  18. 1. 获取光标位置
  19. 当光标在大区块移动时,获取坐标
  20. 2. 如何让元素到指定位置
  21. 父 相对定位
  22. 子 绝对定位
  23. 新需求
  24. 1.鼠标在保持小区域中间
  25. 2. 小区块不能移出大区块
  26. */
  27. divEle.onmousemove = function(e){
  28. e = e || window.event //事件对象
  29. var x = e.offsetX - pEle.clientWidth/2 // 相对自身位置
  30. var y = e.offsetY - pEle.clientHeight/2 //减去小盒子自身高的一半 得到光标在小盒子正中
  31. //边界检查
  32. if(x<0){
  33. x = 0
  34. }
  35. if(x > (divElem.clientWidth - pEle.clientWidth) ){
  36. x =( divElem.clientWidth - pEle.clientWidth )
  37. }
  38. if(y<0){
  39. y = 0
  40. }
  41. if(y > (divElem.clientHeight - pEle.clientHeight) ){
  42. y =( divElem.clientHeight - pEle.clientHeight )
  43. }
  44. pEle.style.top = y + 'px'
  45. pEle.style.left = x + 'px'
  46. }

鼠标点击案例

  1. // 左键按下
  2. document.onmousedown = function () {
  3. console.log('mousedown')
  4. // 鼠标移动事件
  5. document.onmousemove = function (e) {
  6. e = e || window.event
  7. console.log('x : ', e.clientX, ' y :', e.clientY)
  8. }
  9. }
  10. // 左键抬起
  11. document.onmouseup = function () {
  12. console.log('mouseup')
  13. document.onmousemove = null
  14. }

鼠标点击拖动小块案例

<div></div>
  1. *{padding: 0;margin: 0;}
  2. div{
  3. position: relative;
  4. width: 100px;
  5. height: 100px;
  6. background-color: skyblue;
  7. }
  1. /*按在div上,div区块随光标一起移动,抬起div区块停止移动*/
  2. var divEle = document.querySelector('div')
  3. // 左键按下
  4. divEle.onmousedown = function () {
  5. console.log('mousedown')
  6. // 鼠标移动事件
  7. document.onmousemove = function (e) {
  8. e = e || window.event
  9. var x = e.clientX
  10. var y = e.clientY
  11. console.log('x : ', e.clientX, ' y :', e.clientY)
  12. divEle.style.left = x + 'px'
  13. divEle.style.top = y + 'px'
  14. }
  15. }
  16. // 左键抬起
  17. document.onmouseup = function () {
  18. console.log('mouseup')
  19. document.onmousemove = null
  20. }

form表单事件** 

表单提交事件

- 表单提交事件-默认行为

1. 触发表单提交事件

  • submit  是表单form元素   input等等只是表单项
  • .onsunbmit = function(){}

 作用:

  • 表单验证
  •    - 非空验证:表单输入框内容不能为空   

2. 默认行为

  执行action属性指定的url地址跳转,同时获取表单输入框内容以名称值对形式做为参数传递

  •   https://www.xxx.com/?username=admin&password=123

  阻止表单默认行为

  •   e.preventDefault()  阻止自动跳转页面等等
  1. <form action="">
  2. <input type="text" placeholder="请输入用户名" name="username" /><br />
  3. <input type="password" placeholder="请输入密码" name="password" /><br />
  4. <input type="submit" value="确定" id="login" />
  5. </form>
  1. //表单form提交事件
  2. formEle.onsubmit = function (e) {
  3. e = e || window.event // 事件对象
  4. e.preventDefault() // 阻止表单form默认行为
  5. //表单非空验证
  6. var username = usernameInput.value
  7. var password = passwordInput.value
  8. if (username === '') {
  9. alert('用户名不能为空!')
  10. return //为空不执行默认行为
  11. } else if (password === '') {
  12. alert('密码不能为空!')
  13. return //为空不执行默认行为
  14. }
  15. // 用户名密码验证
  16. if(username == 'admin' && password == '123'){
  17. location.href = './index.html' // 表单验证通过 才能跳转到主界面
  18. }else{
  19. alert('用户名或密码出错!')
  20. }
  21. }

input事件 

.oninput = function(){ }  获取input输入框内容

  1. * {
  2. padding: 0;
  3. margin: 0;
  4. }
  5. form {
  6. width: 500px;
  7. background-color: skyblue;
  8. margin: 100px auto;
  9. padding: 50px;
  10. }
  11. form input {
  12. width: 100%;
  13. line-height: 40px;
  14. margin-top: 20px;
  15. }
  16. #login {
  17. height: 40px;
  18. }
  1. <form action="">
  2. <input type="text" placeholder="请输入用户名" name="username" /><br />
  3. <input type="password" placeholder="请输入密码" name="password" /><br />
  4. <input type="file" name="headerimg">
  5. <input type="submit" value="确定" id="login" />
  6. </form>
  1. var usernameInput = document.querySelector('input[name="username"]')
  2. usernameInput.oninput = function(){
  3. console.log(usernameInput.value) //打印input框里输入的值,按一个打一个
  4. }

内容转变事件

 .onchange = function(){}

  1. var headerInput = document.querySelector('input[name="headerimg"]')
  2. headerInput.onchange = function(){
  3. alert('change')
  4. }

焦点事件 

focus 获取焦点事件

blur 失去焦点事件  [可用于表单验证,用户名密码为空时提醒]

  • .onfocus / .οnblur= function(){}
    1. <form action="">
    2. <input type="text" placeholder="请输入用户名" name="username" /><br />
    3. <input type="password" placeholder="请输入密码" name="password" /><br />
    4. <input type="file" name="headerimg">
    5. <input type="submit" value="确定" id="login" />
    6. </form>
    1. var usernameInput = document.querySelector('input[name="username"]')
    2. usernameInput.onfocus = function(){
    3. console.log('获取焦点')
    4. }
    5. usernameInput.onblur = function(){
    6. console.log('失去焦点')
    7. var username = usernameInput.value
    8. if(username === ''){
    9. alert('用户名不能为空!')
    10. }
    11. }

键盘事件 

只给能在页面上选中的元素表单元素) 和 document 来绑定键盘事件
注:不能给页面上一个 div 元素,设置键盘事件的 

keyup  抬起

keydown  按下

keypress  按住

  •  .onkeyup / .onkeydown / .onkeypress  = function(){}

keycode 键码 

  • 兼容性写法 which   e.keycode || e.which
    <h2>键盘事件</h2>
    1. document.onkeyup = function(e){
    2. e = e || window.event // 兼容ie
    3. var keyCode = e.keyCode || e.which // 兼容FireFox2.0
    4. if(e.ctrlKey && keyCode === 32){
    5. alert('登录成功') //如果键盘按的enter则显示登陆成功
    6. }
    7. }

 组合按键

  • altKey  +
  • shiftKey +
  • ctrlKey +

 浏览器相关事件 [window对象]

load 文档加载完成事件 

  • window.onload = function(){}     html文档加载完成后执行
    <div>元素一</div>
    1. div{
    2. height: 1200px;
    3. }
    1. window.onload = function () {
    2. // 这里面的代码,是html文档加载完成之后执行
    3. var divEle = document.querySelector('div')
    4. console.log(divEle)
    5. divEle.innerHTML = '新内容'
    6. }

scroll 滚动事件 

  • window.onscroll = function(){} 
    1. // 浏览器窗口滚动事件
    2. window.onscroll = function(){
    3. console.log(document.documentElement.scrollTop)
    4. }

resize 窗口尺寸改变事件

  • window.onsresize = function(){}  
    1. window.onresize = function(){
    2. // 显示窗口尺寸
    3. console.log('w ',window.innerWidth, ' h ',window.innerHeight)
    4. }

触摸事件[移动端] 

document事件源

        touchstart  触摸开始事件   (事件项)

        touchend 触摸结束事件 

        touchmove 触摸移动事件 

  1. *{padding: 0;margin: 0;}
  2. div{
  3. width: 100%;
  4. height: 100vh;
  5. background-color: skyblue;
  6. }
<div>元素一</div>
  1. document.ontouchstart = function(){
  2. console.log('touchstart');
  3. }
  4. document.ontouchmove = function(e){
  5. e = e || window.event
  6. console.log('touchmove',e); //打印按住时滑动的位置
  7. }
  8. document.ontouchend = function(){
  9. console.log('touchend');
  10. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/789384
推荐阅读