JavaScript 教程

JavaScript 教程

JavaScript 是一种动态编程语言,如果愿意的话,你可以将其理解为任何一种编程语言。但是, JavaScript 可以作为脚本嵌入网页,创造各种各样的应用程序。因此,它称为了前端程序员不得不会的编程语言之一。

基本语法

JavaScript 是一种 OOP 编程语言,一等公民是对象,对象有 属性方法 两种特征,任何对象都可以赋予任何属性和方法。

  • 创建对象: var Person = {};
  • 添加属性: Person.age = 18;
  • 添加方法: Person.eat = function () {return "eating";}

事件响应

html 中的元素也被 JavaScript 视为对象,通过添加特定的方法,可以在网页捕获到特定的事件的时候做出一定的响应。

事件的类型有:

  • onclick
  • onmousedown
  • onmouseup
  • onmousemove

项目:拖拽目标

下面贴一段实现拖拽目标的JS代码:

<script>

			var DraggerOnMouseDown = function (box_id) {
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 变色
				box.style.backgroundColor = "green";
				// 鼠标和左上角的坐标差
				box.diffX = event.clientX - box.offsetLeft;
				box.diffY = event.clientY - box.offsetTop;
				// 跟随移动
				box.onmousemove = function () { DraggerOnMouseMove(box_id) };
				// 鼠标抬起
				box.onmouseup   = function () { DraggerOnMouseUp(box_id) };
			}

			var DraggerOnMouseUp = function (box_id) {
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 取消变色
				box.style.backgroundColor = "#C1D2F0";
				// 取消跟随移动
				box.onmousemove = null;
			}

			var DraggerOnMouseMove = function (box_id) {
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 获取移动后的坐标
				var moveX = event.clientX - box.diffX;
                var moveY = event.clientY - box.diffY;
<!--                if(moveX < 0){-->
<!--                    moveX = 0;-->
<!--                } else if (moveX > window.innerWidth - box.offsetWidth){-->
<!--                    moveX = window.innerWidth - box.offsetWidth-->
<!--                }-->
<!--                if(moveY < 0) {-->
<!--                    moveY = 0;-->
<!--                } else if (moveY > window.innerHeight - box.offsetHeight){-->
<!--                    moveY =  window.innerHeight - box.offsetHeight-->
<!--                }-->
                // 改变坐标
				box.style.left = moveX + 'px';
				box.style.top  = moveY + 'px';

			}
		</script>

代码实现的逻辑是,首先定义三个函数 DraggerOnMouseDown, DraggerOnMouseUp, DraggerOnMouseMove,将 Down 先赋给要拖拽的对象,在 Down 的实现内部赋予对象 Up 和 Move 方法。这样写的好处是只要给对象 Down 方法,就可以同时实现 Down,Up 和 Move 三步。运行的过程如下

  1. MouseDown. 赋予 Box 以 Up 和 Move 方法
  2. 若 MouseMove, 则运行 Move 改变 Box 的坐标
  3. 若 MouseUp, 则取消 Move 函数

这个拖拽程序的问题是,只有鼠标悬停在 Box 上方时,Down 和 Up 才会被触发。程序可能会因为帧数问题执行了 Down 却没有执行 Up。因此最好把 Down 和 Up 改成全局的函数,通过捕获来移动相应的 Box。

改进后的代码如下

<script>
			window.onload = function () {
				document.onmousedown = function () {
					var event = window.event;
					var box = event.target;
					document.drag_target = box;
					if (box.classList.contains('tb')) {
						document.getElementById("log").innerHTML = "on mouse down";
						DraggerOnMouseDown(box.id);
						document.onmousemove = function () { DraggerOnMouseMove(box.id); }
					}
				}

				document.onmouseup = function () {
					var event = window.event;
					var box = document.drag_target;
					if (box.classList.contains('tb')) {
						document.getElementById("log").innerHTML = "on mouse up";
						DraggerOnMouseUp(box.id);
						document.onmousemove = null;
					}
					document.drag_target = null;
				}
			}

			var DraggerOnMouseDown = function (box_id) {
				document.getElementById("log").innerHTML = "on mouse down";
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 变色
				box.style.backgroundColor = "green";
				// 鼠标和左上角的坐标差
				box.diffX = event.clientX - box.offsetLeft;
				box.diffY = event.clientY - box.offsetTop;
<!--				// 抬起鼠标-->
<!--				box.onmouseup = function () { DraggerOnMouseUp(box_id) };-->
			}

			var DraggerOnMouseUp = function (box_id) {
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 取消变色
				box.style.backgroundColor = "#C1D2F0";
			}

			var DraggerOnMouseMove = function (box_id) {
				// 获取事件
				var event = window.event;
				// 获取 box
				var box   = document.getElementById(box_id);
				// 获取移动后的坐标
				var moveX = event.clientX - box.diffX;
                var moveY = event.clientY - box.diffY;
<!--                if(moveX < 0){-->
<!--                    moveX = 0;-->
<!--                } else if (moveX > window.innerWidth - box.offsetWidth){-->
<!--                    moveX = window.innerWidth - box.offsetWidth-->
<!--                }-->
<!--                if(moveY < 0) {-->
<!--                    moveY = 0;-->
<!--                } else if (moveY > window.innerHeight - box.offsetHeight){-->
<!--                    moveY =  window.innerHeight - box.offsetHeight-->
<!--                }-->
                // 改变坐标
				box.style.left = moveX + 'px';
				box.style.top  = moveY + 'px';

			}
		</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript教程是一种帮助初学者掌握JavaScript编程语言的学习资源。JavaScript是一种常用的脚本语言,用于在网页上添加交互性和动态性。在教程中,学习者将学习如何使用JavaScript语法、变量、操作符、流程控制、函数、对象和事件以及其他相关概念。 教程通常从基础知识开始,引导学习者了解JavaScript的核心概念和基本语法。学习者将学习如何使用变量来存储和操作数据,以及使用操作符对数据进行处理。教程还会介绍流程控制,如条件语句和循环语句,用于根据不同的条件执行不同的代码块。 随着学习的深入,教程会介绍函数的概念和用法。学习者将学习如何定义和调用函数,以及如何传递参数和返回值。函数是JavaScript编程的重要组成部分,有助于组织和重复使用代码。 在教程的后期,学习者将了解对象和事件的使用。他们将学习如何定义和访问对象的属性和方法,以及如何使用事件来响应用户的交互。 此外,教程还可以涵盖其他主题,如数组、字符串、DOM操作、AJAX和错误处理等等。这些都是进一步扩展和加强JavaScript编程能力所必需的知识。 JavaScript教程通常会提供实际的示例和练习,帮助学习者巩固他们所学的知识并提高他们的编程技能。通过实践,学习者可以更好地理解和运用JavaScript。 总之,JavaScript教程是一种以有效的方式介绍JavaScript编程语言的学习资源,通过理论和实践相结合的方式,帮助学习者从基础到高级掌握JavaScript的核心概念和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值