赞
踩
当点击一个按钮的时候,会弹出一个对话框。在JavaScript中,
“点击”这个事情就看作一个事件。“弹出对话框”其实就是我们在点击事件中做的一些事。
事件源 -触发事件的元素 ->如 按钮
事件类型 -事件如何触发:点击、双击、移动等等 ->如 click点击事件
事件处理函数 -事件可以做什么
<button>按钮</button> //事件源
- var btn = document.querySelector('button')
- btn.onclick = function(){ //onclick事件类型
- lert('弹出内容') //function() 事件函数
- }
处理事件与事件相关的
由系统创建,当触发事件时,自动生成一个事件对象 duix
在事件处理函数中获取名为event的事件对象
事件处理函数定义一个形参用来接受事件对象
IE浏览器:e = e || window.event
<button>按钮</button>
- var btn = document.querySelector('button')
- btn.onclick = function (e) { // e=event e是形参 可以写成任何名字
- e = e || window.event // 兼容ie写法 e = e相当于给event重命名
- console.log(e)
- }
<div></div>
- var divEle = document.querySelector('div')
- /*
- 绑定点击事件
- 1.事件源 div元素
- 2.事件类型 事件类型名click
- 3.事件处理函数
- 事件对象 event
- */
- divEle.onclick = function(e){
- e = e || window.event // 获取事件对象
- console.log('offsetX :',e.offsetX, ' offsetY :',e.offsetY) // 相对自身坐标
- console.log('clientX :',e.clientX, ' clientY :',e.clientY) // 相对浏览器窗口
- console.log('pageX :',e.pageX, ' pageY :',e.pageY) // 相对页面窗口
- }
- *{padding: 0;margin: 0;}
- div{
- width: 200px;
- height: 1200px;
- background-color: skyblue;
- margin: 100px;
- }
.onmouseover/.onmouseout/ .onmousemove = function(){}
<div>前端编程</div>
- /*
- 鼠标移入div区块,字体颜色变为红色
- 复杂问题简化
- 分解:
- 1. 鼠标移入div区块
- div.onmouseover = function(){
- 改变字体颜色
- }
- 2. 字体颜色变为红色
- div.style.color = 'red'
- */
- var divEle = document.querySelector('div')
- // 鼠标移入
- divEle.onmouseover = function(){
- divEle.style.color = 'red'
- }
- // 鼠标移出
- divEle.onmouseout = function(){
- divEle.style.color = 'blue'
- }
- // 鼠标移动
- divEle.onmousemove = function(e){
- // 事件对象
- e = e || window.event
- //打印鼠标(光标)位置
- console.log(e.offsetX, e.offsetY)
- }
- *{padding: 0;margin: 0;}
- div{
- width: 200px;
- height: 40px;
- background-color: skyblue;
- text-align: center;
- line-height: 40px;
- color: blue;
- }
- *{padding: 0;margin: 0;}
- div{
- width: 500px;
- height: 500px;
- background-color: skyblue;
- margin: 100px;
- position: relative;
- }
- p{
- position: absolute;
- width: 100px;
- height: 100px;
- background-color: pink;
- text-align: center;
- line-height: 100px;
- display: none; /*隐藏 */
- /*鼠标移入元素 事件不起作用 解决闪动问题*/
- pointer-events: none;
- }
- <div>
- <p>提示信息</p>
- </div>
- /*
- 鼠标移入div显示p区域
- */
- var divEle = document.querySelector('div')
- var pEle = document.querySelector('p')
- divEle.onmouseover = function(){
- pEle.style.display = 'block'
- }
- /*
- 移出隐藏
- */
- divEle.onmouseout = function(){
- pEle.style.display = 'none'
- }
- /*
- p小区块随光标在大区块div中移动
- 获取光标位置坐标赋值给小区块
- 1. 获取光标位置
- 当光标在大区块移动时,获取坐标
- 2. 如何让元素到指定位置
- 父 相对定位
- 子 绝对定位
- 新需求
- 1.鼠标在保持小区域中间
- 2. 小区块不能移出大区块
- */
- divEle.onmousemove = function(e){
- e = e || window.event //事件对象
- var x = e.offsetX - pEle.clientWidth/2 // 相对自身位置
- var y = e.offsetY - pEle.clientHeight/2 //减去小盒子自身高的一半 得到光标在小盒子正中
- //边界检查
- if(x<0){
- x = 0
- }
- if(x > (divElem.clientWidth - pEle.clientWidth) ){
- x =( divElem.clientWidth - pEle.clientWidth )
- }
- if(y<0){
- y = 0
- }
- if(y > (divElem.clientHeight - pEle.clientHeight) ){
- y =( divElem.clientHeight - pEle.clientHeight )
- }
- pEle.style.top = y + 'px'
- pEle.style.left = x + 'px'
- }
- // 左键按下
- document.onmousedown = function () {
- console.log('mousedown')
-
- // 鼠标移动事件
- document.onmousemove = function (e) {
- e = e || window.event
- console.log('x : ', e.clientX, ' y :', e.clientY)
- }
- }
- // 左键抬起
- document.onmouseup = function () {
- console.log('mouseup')
- document.onmousemove = null
- }
<div></div>
- *{padding: 0;margin: 0;}
- div{
- position: relative;
- width: 100px;
- height: 100px;
- background-color: skyblue;
- }
- /*按在div上,div区块随光标一起移动,抬起div区块停止移动*/
- var divEle = document.querySelector('div')
- // 左键按下
- divEle.onmousedown = function () {
- console.log('mousedown')
- // 鼠标移动事件
- document.onmousemove = function (e) {
- e = e || window.event
- var x = e.clientX
- var y = e.clientY
- console.log('x : ', e.clientX, ' y :', e.clientY)
- divEle.style.left = x + 'px'
- divEle.style.top = y + 'px'
- }
- }
- // 左键抬起
- document.onmouseup = function () {
- console.log('mouseup')
- document.onmousemove = null
- }
1. 触发表单提交事件
作用:
2. 默认行为
执行action属性指定的url地址跳转,同时获取表单输入框内容以名称值对形式做为参数传递
- <form action="">
- <input type="text" placeholder="请输入用户名" name="username" /><br />
- <input type="password" placeholder="请输入密码" name="password" /><br />
- <input type="submit" value="确定" id="login" />
- </form>
- //表单form提交事件
- formEle.onsubmit = function (e) {
- e = e || window.event // 事件对象
- e.preventDefault() // 阻止表单form默认行为
- //表单非空验证
- var username = usernameInput.value
- var password = passwordInput.value
- if (username === '') {
- alert('用户名不能为空!')
- return //为空不执行默认行为
- } else if (password === '') {
- alert('密码不能为空!')
- return //为空不执行默认行为
- }
- // 用户名密码验证
- if(username == 'admin' && password == '123'){
- location.href = './index.html' // 表单验证通过 才能跳转到主界面
- }else{
- alert('用户名或密码出错!')
- }
-
- }
.oninput = function(){ } 获取input输入框内容
- * {
- padding: 0;
- margin: 0;
- }
- form {
- width: 500px;
- background-color: skyblue;
- margin: 100px auto;
- padding: 50px;
- }
- form input {
- width: 100%;
- line-height: 40px;
- margin-top: 20px;
- }
-
- #login {
- height: 40px;
- }
- <form action="">
- <input type="text" placeholder="请输入用户名" name="username" /><br />
- <input type="password" placeholder="请输入密码" name="password" /><br />
- <input type="file" name="headerimg">
- <input type="submit" value="确定" id="login" />
- </form>
- var usernameInput = document.querySelector('input[name="username"]')
- usernameInput.oninput = function(){
- console.log(usernameInput.value) //打印input框里输入的值,按一个打一个
- }
- var headerInput = document.querySelector('input[name="headerimg"]')
- headerInput.onchange = function(){
- alert('change')
- }
- <form action="">
- <input type="text" placeholder="请输入用户名" name="username" /><br />
- <input type="password" placeholder="请输入密码" name="password" /><br />
- <input type="file" name="headerimg">
- <input type="submit" value="确定" id="login" />
- </form>
- var usernameInput = document.querySelector('input[name="username"]')
- usernameInput.onfocus = function(){
- console.log('获取焦点')
- }
- usernameInput.onblur = function(){
- console.log('失去焦点')
- var username = usernameInput.value
- if(username === ''){
- alert('用户名不能为空!')
- }
- }
只给能在页面上选中的元素(表单元素) 和 document 来绑定键盘事件
注:不能给页面上一个 div 元素,设置键盘事件的
<h2>键盘事件</h2>
- document.onkeyup = function(e){
- e = e || window.event // 兼容ie
- var keyCode = e.keyCode || e.which // 兼容FireFox2.0
- if(e.ctrlKey && keyCode === 32){
- alert('登录成功') //如果键盘按的enter则显示登陆成功
- }
- }
<div>元素一</div>
- div{
- height: 1200px;
- }
- window.onload = function () {
- // 这里面的代码,是html文档加载完成之后执行
- var divEle = document.querySelector('div')
- console.log(divEle)
- divEle.innerHTML = '新内容'
- }
- // 浏览器窗口滚动事件
- window.onscroll = function(){
- console.log(document.documentElement.scrollTop)
- }
- window.onresize = function(){
- // 显示窗口尺寸
- console.log('w ',window.innerWidth, ' h ',window.innerHeight)
- }
- *{padding: 0;margin: 0;}
- div{
- width: 100%;
- height: 100vh;
- background-color: skyblue;
- }
<div>元素一</div>
- document.ontouchstart = function(){
- console.log('touchstart');
- }
- document.ontouchmove = function(e){
- e = e || window.event
- console.log('touchmove',e); //打印按住时滑动的位置
- }
- document.ontouchend = function(){
- console.log('touchend');
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。