JavaScript入门
- 1_语法基础
- 1.1_变量
- 1.2_数据类型
- 1.3_运算符
- 1.4_类型转换
- 1.5_注释跟c一样
- 2_流程控制语句
- 3_函数
- 3.1_没有返回值的函数
- 3.2_有返回值的函数
- 4_对象
- 4.1_对象简介
- 4.2_字符串对象
- 4.3_数组对象
- 4.4_时间对象
- 4.5_数学对象简介
- 5_DOM基础
- 5.1_DOM是什么
- 5.2_节点类型
- 5.3_获取元素
- 5.4_创建元素
- 5.5_插入元素
- 5.6_删除元素
- 5.7_复制元素
- 5.8_替换元素
- 6_DOM进阶
- 6.1_HTML属性操作(对象属性)
- 6.2_HTML属性操作(对象方法)
- 6.3_CSS属性操作
- 6.4_DOM遍历
- 6.5_innerHTML和innerText
- 7_事件基础
- 7.1_事件调用方式
- 7.2_鼠标事件
- 7.3 键盘事件
- 7.4_表单事件
- 7.5_表单事件
- 7.6_页面事件
- 8_事件进阶
- 8.1_事件监听器
- 8.2_event对象
- 9_jQuery
- 9.1_jQuery介绍
1_语法基础
1.1_变量
在JavaScript中,所有变量都是用var声明。
语法:
var 变量名 = 值;
1.2_数据类型
在JavaScript中,数据类型可以分为两种:一种是“基本数据类型”;另外一种是“引用数据类型”。
基本数据类型有5种:数字、字符串、布尔值、未定义值和空值。而常见的引用数据类型有两种:数组、对象。
- 数字
JavaScript中的数字是不区分“整型(int)”和“浮点型(float)”的。
- 字符串
字符串都是用英文单引号或英文双引号(注意都是英文)括起来的。
单引号括起来的字符串中,不能含有单引号,只能含有双引号。同样的道理,双引号括起来的字符串中,也不能含有双引号,只能含有单引号
1.3_运算符
- '+'加法运算符规则
数字 + 数字 = 数字
字符串 + 字符串 = 字符串
字符串 + 数字 = 字符串
2.其他
赋值、比较、逻辑、条件运算符都和c语言一样
1.4_类型转换
“字符串”转换为“数字”
(1)Number()
(2)parseInt()和parseFloat()
Number()方法可以将任何“数字型字符串”转换为数字。
parseInt()和parseFloat是提取“首字母为数字或者±的任意字符串”中的数字直到遇到非数字,其中,parseInt()提取的是整数部分,parseFloat()不仅会提取整数部分,还会提取小数部分“数字”转换为“字符串”
(1)与空字符串相加
(2)toString()
1.5_注释跟c一样
2_流程控制语句
if else、while、for、switch语句和C语言一样
3_函数
3.1_没有返回值的函数
function 函数名(参数1 , 参数2 ,..., 参数n)
{……
}
3.2_有返回值的函数
function 函数名(参数1 , 参数2 ,..., 参数n)
{……return 返回值;
}
4_对象
4.1_对象简介
对象可以分为两种:一种是“自定义对象”;另外一种是“内置对象”。自定义对象,是需要我们自己定义的对象;内置对象,系统已经定义好的
常用的内置对象
(1)字符串对象:String
(2)数组对象:Array
(3)日期对象:Date
(4)数值对象:Math
4.2_字符串对象
获取字符串长度:
字符串名.length
大小写转换
字符串名.toLowerCase()
字符串名.toUpperCase()
获取某一个字符(首位字符下标为0)
字符串名.charAt(n)
截取字符串
字符串名.substring(start, end)
substring(start,end)截取范围为:[start,end)替换字符串
字符串名.replace(字符串子串, 替换字符串)
将字符串中的出现的第一个字符串子串换为替换字符串
字符串名.replace(正则表达式, 替换字符串)
如:str.replace(/字符串子串/g, 替换字符串);
将字符串中所有的字符串子串换为替换字符串分割字符串
字符串名.split("分割符")
把字符串按分隔符分成若干个字符串数组检索字符串的位置
字符串名.indexOf(指定字符串)
使用indexOf()方法来找出“某个指定字符串”在字符串中首次出现的下标位置
字符串名.lastIndexOf(指定字符串)
使用lastIndexOf()来找出“某个指定字符串”在字符串中最后出现的下标位置。
若无此字符串则返回-1
4.3_数组对象
- 创建数组(数组元素随时可以新增,数组长度无限制)
var 数组名 = new Array(元素1, 元素2, ……, 元素n); //完整形式
var 数组名 = [元素1, 元素2, ……, 元素n]; //简写形式
- 获取数组长度
数组名.length
- 截取数组部分
数组名.slice(start, end);
slice(start,end)截取范围为:[start,end),截取到的每个数组元素之间用’,'隔开- 在数组开头添加元素
数组名.unshift(新元素1, 新元素2, ……, 新元素n)
- 在数组结尾添加新元素
数组名.push(新元素1, 新元素2, ……, 新元素n)
- 删除数组中第一个元素
数组名.shift()
- 删除数组最后一个元素
数组名.pop()
- 数组大小比较
数组名.sort(up/down)
使用sort()方法来对数组中所有元素进行大小比较,然后按从大到小或者从小到大进行排序。- 数组颠倒顺序
数组名.reverse();
- 将数组元素连接成字符串
数组名.join("连接符");
4.4_时间对象
- 创建时间变量
var 日期对象名 = new Date();
方法 | 说明 |
---|---|
getFullYear() | 获取年份,取值为4位数字 |
getMonth() | 获取月份,取值为0(一月)到11(十二月)之间的整数 |
getDate() | 获取日数,取值为1~31之间的整数 |
getHours() | 获取小时数,取值为0~23之间的整数 |
getMinutes() | 获取分钟数,取值为0~59之间的整数 |
getSeconds() | 获取秒数,取值为0~59之间的整数 |
getDay() | 获取星期几(0表示星期天,1表示星期一……6表示星期六) |
方法 | 说明 |
---|---|
setFullYear() | 可以设置年、月、日 |
setMonth() | 可以设置月、日 |
setDate() | 可以设置日 |
setHours() | 可以设置时、分、秒、毫秒 |
setMinutes() | 可以设置分、秒、毫秒 |
setSeconds() | 可以设置秒、毫秒 |
4.5_数学对象简介
Math对象跟其他对象不一样,我们不需要使用new关键字来创造,而是直接使用它的属性和方法就行。
- Math.属性
在JavaScript中,Math对象的属性往往都是数学中经常使用的“常量”,常见的Math对象属性如表所示。
2. Math方法
常用的方法
其中随机数生成[0, 1)
5_DOM基础
5.1_DOM是什么
我们在操作元素时,其实就是把这个元素看成一个对象,然后使用这个对象的属性和方法来进行相关操作
5.2_节点类型
在JavaScript中,节点也是分为很多类型的。DOM节点共有12种类型,不过常见的只有3种(其他的不用管)。
(1)元素节点 (2)属性节点 (3)文本节点
注意:
(1)一个元素就是一个节点,这个节点称之为“元素节点”。
(2)属性节点和文本节点看起来像是元素节点的一部分,但实际上,它们是独立的节点,并不属于元素节点。
(3)只有元素节点才可以拥有子节点,属性节点和文本节点都无法拥有子节点(它们求子多年,但仍未如愿)。
节点类型 | nodeType值 |
---|---|
元素节点 | 1 |
属性节点 | 2 |
文本节点 | 3 |
5.3_获取元素
(1)getElementById()
(2)getElementsByTagName()
(3)getElementsByClassName()
(4)querySelector()和querySelectorAll()
(5)getElementsByName()
(6)document.title和document.body
咦,这不跟CSS选择器相似吗?说得没错。只不过选择器是CSS的操作方式,而JavaScript却有着属于自己的另一套方法。
获取元素
5.4_创建元素
var e1 = document.createElement("元素名"); //创建元素节点
var txt = document.createTextNode("文本内容"); //创建文本节点
e1.appendChild(txt); //把文本节点插入元素节点中
e2.appendChild(e1); //把组装好的元素插入已存在的元素中
5.5_插入元素
- appendChild():末尾
使用appendChild()把一个新元素插入到父元素的内部子元素的末尾
A.appendChild(B);
把B插入到A元素内部子元素的末尾
- insertBefore():之前
使用insertBefore()方法将一个新元素插入到父元素中的某一个子元素之前
A.insertBefore(B,ref);
A表示父元素,B表示新子元素。ref表示指定子元素,在这个元素之前插入B
appendChild():末尾
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>window.onload = function () {var oBtn = document.getElementById("btn");//为按钮添加点击事件oBtn.onclick = function () {var oUl = document.getElementById("list");var oTxt = document.getElementById("txt");//将文本框的内容转换为“文本节点”var textNode = document.createTextNode(oTxt.value);//动态创建一个li元素var oLi = document.createElement("li");//将文本节点插入li元素中去oLi.appendChild(textNode);//将li元素插入ul元素中去oUl.appendChild(oLi);};}</script>
</head>
<body><ul id="list"><li>HTML</li><li>CSS</li><li>JavaScript</li></ul><input id="txt" type="text"/><input id="btn" type="button" value="插入" />
</body>
</html>
insertBefore():之前
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>window.onload = function () {var oBtn = document.getElementById("btn");oBtn.onclick = function () {var oUl = document.getElementById("list");var oTxt = document.getElementById("txt");//将文本框的内容转换为“文本节点”var textNode = document.createTextNode(oTxt.value);//动态创建一个li元素var oLi = document.createElement("li");//将文本节点插入li元素中oLi.appendChild(textNode);//将li元素插入到ul的第1个子元素前面oUl.insertBefore(oLi, oUl.firstElementChild);}}</script>
</head>
<body><ul id="list"><li>HTML</li><li>CSS</li><li>JavaScript</li></ul><input id="txt" type="text"/><input id="btn" type="button" value="插入" />
</body>
</html>
5.6_删除元素
A.removeChild(B);
A表示父元素,B表示父元素内部的某个子元素。
删除整个列表
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>window.onload = function () {var oBtn = document.getElementById("btn");oBtn.onclick = function () {var oUl = document.getElementById("list");document.body.removeChild(oUl);}}</script>
</head>
<body><ul id="list"><li>HTML</li><li>CSS</li><li>JavaScript</li><li>jQuery</li><li>Vue.js</li></ul><input id="btn" type="button" value="删除" />
</body>
</html>
5.7_复制元素
obj.cloneNode(bool)
5.8_替换元素
A.replaceChild(new,old);
6_DOM进阶
6.1_HTML属性操作(对象属性)
6.2_HTML属性操作(对象方法)
- obj.getAttribute(attr):获取元素的某个属性的值,同obj.attr
- obj.setAttribute(“attr”,“值”):设置元素的某个属性的值,同obj.attr = “值”;
3. obj.removeAttribute(“attr”):删除元素的某个属性
4. obj.hasAttribute(“attr”):判断元素是否含有某个属性
6.3_CSS属性操作
- 获取CSS属性值
getComputedStyle(obj).attr
- 设置CSS属性值
obj.style.attr = "值";
- cssText属性
在JavaScript中,我们可以使用cssText属性来同时设置多个CSS属性
obj.style.cssText = "值";
例如:
oDiv.style.cssText = "width:100px;height:100px;border:1px solid gray;";
6.4_DOM遍历
- 查找父元素:
obj.parentNode
- 查找子元素
可以使用以下两组方式来获得父元素中的所有子元素或某个子元素
(1)childNodes、firstChild、lastChild
(2)children、firstElementChild、lastElementChild
- 两种方法的比较
使用childNodes、firstChild、lastChild这几个来操作元素节点是非常麻烦的,因为它们都把文本节点(一般是空白节点)算进来了。实际上,上面这种是旧的做法,JavaScript为了让我们可以快速开发,提供了新的方法,也就是只针对元素节点的操作属性:children、firstElementChild、lastElementChild。
6.5_innerHTML和innerText
转自
7_事件基础
7.1_事件调用方式
在script标签中调用
obj.事件名 = function() { …… };
在元素中调用事件
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>function alertMes(){alert("绿叶学习网");}</script>
</head>
<body><input type="button" onclick="alertMes()" value="弹出" />
</body>
</html>
7.2_鼠标事件
事件 | 说明 |
---|---|
onclick | 鼠标单击事件 |
onmouseover | 鼠标移入事件 |
onmouseout | 鼠标移出事件 |
onmousedown | 鼠标按下事件 |
onmouseup | 鼠标松开事件 |
onmousemove | 鼠标移动事件 |
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><style type="text/css">#btn {display: inline-block;width: 80px;height: 24px;line-height: 24px;font-family:微软雅黑;font-size:15px;text-align: center;border-radius: 3px;background-color: deepskyblue;color: White;cursor: pointer;}</style><script>window.onload = function () {var oDiv = document.getElementById("btn");oDiv.onclick = function () //鼠标点击{alert("玩我么?");}oDiv.onmouseover = function() //鼠标移进{this.style.backgroundColor = "pink";}oDiv.onmouseout = function() //鼠标移出{this.style.backgroundColor = "deepskyblue";}};</script>
</head>
<body><div id="btn">调试代码</div>
</body>
</html>
7.3 键盘事件
在JavaScript中,常用的键盘事件共有2种。
(1)键盘按下:onkeydown
(2)键盘松开:onkeyup
举例:统计输入字符的长度
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>window.onload = function () {var oTxt = document.getElementById("txt");var oNum = document.getElementById("num");oTxt.onkeyup = function () {var str = oTxt.value;oNum.innerHTML = str.length;};};</script>
</head>
<body><input id="txt" type="text" /><div>字符串长度为:<span id="num">0</span></div>
</body>
</html>
7.4_表单事件
在JavaScript中,常用的表单事件有3种。
(1)onfocus和onblur (2)onselect (3)onchange
- onfocus和onblur焦点事件
onfocus表示获取焦点时触发的事件,而onblur表示失去焦点时触发的事件
并不是所有的HTML元素都有焦点事件,具有“获取焦点”和“失去焦点”特点的元素只有2种。
(1)表单元素(单选框、复选框、单行文本框、多行文本框、下拉列表)
(2)超链接
onselect
在JavaScript中,当我们选中“单行文本框”或“多行文本框”中的内容时,就会触发onselect事件。onchange
在JavaScript中,onchange事件常用于“具有多个选项的表单元素”。
(1)单选框选择某一项时触发。
(2)复选框选择某一项时触发。
(3)下拉列表选择某一项时触发
举例:onfocus和onblur焦点事件
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><style type="text/css">#search {color: #bbbbbb}</style><script>window.onload = function () {//获取元素对象var oSearch = document.getElementById("search");//获取焦点oSearch.onfocus = function () {if (this.value == "百度一下,你就知道") {this.value = "";this.style.color = "black";}};//失去焦点oSearch.onblur = function () {if (this.value == "") {this.value = "百度一下,你就知道"; this.style.color = "#bbbbbb";}};}</script>
</head>
<body><input id="search" type="text" value="百度一下,你就知道"/><input id="Button1" type="button" value="搜索" />
</body>
</html>
举例:onselect事件
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>window.onload = function () {var oTxt1 = document.getElementById("txt1");var oTxt2 = document.getElementById("txt2");oTxt1.onselect = function () {alert("你选中了单行文本框中的内容");};oTxt2.onselect = function () {alert("你选中了多行文本框中的内容");};}</script>
</head>
<body><input id="txt1" type="text" value="如果我真的存在,也是因为你需要我。"/><br /><textarea id="txt2" cols="20" rows="5">如果我真的存在,也是因为你需要我。</textarea>
</body>
</html>
7.5_表单事件
在JavaScript中,常用的编辑事件有3种。
oncopy
onselectstart
oncontextmenu
总的来说,oncopy、onselectstart、oncontextmenu这3个在大多数情况下都是用来保护版权的。不过为了更好的用户体验,我们还是少用为妙,除非是迫不得已的情况。
1.oncopy
在JavaScript中,我们可以使用oncopy事件来防止页面内容被复制。
语法:
document.body.oncopy = function () { return false; }
- onselectstart
在JavaScript中,我们可以使用onselectstart事件来防止页面内容被选取。
语法:
document.body.onselectstart=function(){return false;}
- oncontextmenu
在JavaScript中,我们可以使用oncontextmenu事件来禁止鼠标右键。
语法:
document.oncontextmenu = function () {return false;}
详见
7.6_页面事件
在JavaScript中,常用的页面事件只有两个:onload、onbeforeunload
- onload
在JavaScript中,onload表示文档加载完成后再执行的一个事件。
并不是所有情况都需要用到window.onload的,一般来说,只有在想要“获取页面中某一个元素”的时候才会用到。
解释:因为如果不把整个文档加载完成后,系统就不认识你要获取的元素。
例如:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title></title><script>var oBtn = document.getElementById("btn");oBtn.onclick = function () {alert("JavaScript");};</script>
</head>
<body><input id="btn" type="button" value="提交" />
</body>
</html>
便不能执行
- onbeforeunload
在JavaScript中,onbeforeunload表示离开页面之前触发的一个事件。
语法:
window.onbeforeunload = function(){ ……}
8_事件进阶
8.1_事件监听器
详见
用
window.addEventListener("keydown", function (e) , false)
代替window.onload()
8.2_event对象
属性 | 说明 |
---|---|
type | 事件类型 |
keyCode | 键码值 |
shiftKey | 是否按下shift键 |
ctrlKey | 是否按下Ctrl键 |
altKey | 是否按下Alt键 |
按键 | 键码 |
---|---|
W(上) | 87 |
S(下) | 83 |
A(左) | 65 |
D(右) | 68 |
↑ | 38 |
↓ | 40 |
← | 37 |
→ | 39 |
9_jQuery
使用文档
9.1_jQuery介绍
jQuery是JavaScript的一个方法库。
使用方式为$('CSS选择器').action()
如:
<! DOCTYPE htm1>
<htm1 lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
//下一行为CDN,即在线jQuery库,就是不用本地下载引用了
<--<script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"x</script>-->
//下一行为本地jQuery引用
<script src="lib/jquery-3.4.1.js"></script>
</head>
<body>
<a href="" id="test-jquery">点我</a>
<script>
//当点击的时候有弹窗
$('#test-jquery').click(function () {alert( 'hello,jQuery' );
})
</script>
</ body></htm1>