JS是基于对象和事件驱动的脚本语言,作用在客户端(浏览器)上
1、JS的特点
交互性
安全性:(不可以访问本地的硬盘)
跨平台性:浏览器就可以解析js的文件
2、JS组成
(1)ECMAScript 标准(js的语法,变量,函数)
(2)BOM (Browser Object Model) 浏览器对象模型
(3)DOM (Document Object Model) 文档对象模型
3、语法
把JS和HTML的结合一起
方式一:
HTML的文件提供了一个标签 <script type="text/javascript">js的代码</script>,标签可以放在HTML文件的任意位置上。
方式二:引入外部的文件,有一个外部的文件。编写js文件
<script src="引入js文件(相对路径)" >
如果script通过src的属性引入了外部的文件,里面的js代码就不会执行了
var 声明变量
基本数据类型
Undefined、Null、Boolean、Number 和 String
String 字符串类型
双引号和单引号都代表的是字符串
Number 数字类型
不区分整数和小数
Null 空,给引用赋值的
Undefined 未定义(声明变量,没有赋值)
typeof() 判断当前变量是什么类型的数据
运算符
算术运算符
0或者null是false,非0或者非null是true,默认用1表示
比较运算符
== 比较值是否相同
=== 比较值和类型是否相同
数组
声明数组
1 var arr = [12,34,55]; 2 var arr = new Array(5); 3 var arr = new Array(2,3,4)
数组的属性
长度:length
数组的长度是可变的
方法
function 方法名称(参数列表 (num,str)){ return; }
参数列表:不能使用var关键字
返回值:可写可不写的,如果有写返回值,如果没有,返回值可以省略不写
动态函数
1 function getSum(){ 2 return 50; 3 }
js提供了内置对象 Function
匿名函数
没有名称的函数
1 function(){ 2 return 50; 3 }
全局变量:在<script>标签内部定义的变量,全局变量
局部变量:在函数的内部定义的变量,局部变量
对象和API
String 对象
声明
1 var str = "abc"; 2 var str = new String("abc");
属性:
length:字符串的长度
方法:
和HTML相关的方法
1 bold() // 使用粗体显示显示字符串 2 fontcolor(color) // 参数是必须的,设置字体的颜色 3 fontsize(size) //设置字体的大小(1-7) 4 italics() // 斜体 5 link(url) // 设置链接 6 sub() //下标 7 sup() // 上标
和java中String对象类似的
1 charAt(index) // 返回指定位置的字符 2 indexOf(str,fromIndex) // 检索字符串,没有返回-1 3 lastIndexOf(str,fromIndex) // 从后向前检索字符串 4 replace(要替换的字符串,替换成啥) 5 substring(start,stop) // 截取字符串 6 substr(start,length) // 截取字符串,从哪开始,截取多长
Array对象
声明数组
1 var arr = [12,33]; 2 var arr = new Array(4,4);
属性:
length:长度
方法:
1 concat(元素,数组); // 返回新的数组 2 join(s) // 通过s标识(-),进行分隔,返回字符串 3 pop() // 删除末尾的元素,返回最后一个元素 4 push() // 向末尾添加元素,返回新数组的长度 5 sort() // 排序的方法
Date日期对象
var date = new Date(); // 当前的日期
方法:
1 toLocaleString() // 转换本地的日期格式 2 toLocaleDateString() // 只包含日期 3 toLocaleTimeString() // 只包含时间 4 5 getDate() // 返回一个月中的某一天(1-31) 6 getDay() // 返回一周中的某一天(0-6) 7 getMonth() // 返回月份(0-11) 8 getFullYear() // 返回年份 9 10 getTime() // 返回毫秒数 11 setTime() // 通过毫秒数获取日期 12 13 parse(str) // 解析字符串,返回毫秒数
Math对象
1 ceil(x) // 上舍入 2 floor(x) // 下舍入 3 round(x) // 四舍五入 4 random() // 0-1的随机数
RegExp对象
正则表达式对象
应用:编写注册的表单,对表单输入的内容进行校验
1 var reg = new RegExp("表达式"); // (开发中不经常使用) 2 var reg = /表达式/ // 开发中经常使用 3 var reg = /^表达式$/ // 开发中经常使用 4 5 exec(string) // 不经常使用,如果匹配,返回匹配的结果 6 test(string) // 如果匹配,返回是true,如果不匹配,返回是false 7 if(reg.test("abc"))
全局函数
使用全局函数,不需要任何的对象
全局函数可以拿过来使用
global帮着管理全局函数
1 eval() // 可以解析字符串,执行字符串中间的js代码 2 isNaN() // 判断是否是非数字值 3 parseInt() // 解析字符串,返回整数 4 5 encodeURI() // 进行编码 6 decodeURI() // 解析解码 7 8 encodeURIComponent() 9 decodeURIComponent() 10 11 escape() 12 unescape()
BOM 浏览器对象模型(Brower Object Model)
Window 窗口对象
Navigator 和浏览器版本相关的对象
userAgent // 获取浏览器的相关的信息 window.navigator.userAgent // window可以省略不写
Screen 和屏幕相关的对象
History 和浏览器历史相关
1 back() // 返回上一个页面 2 forward() // 去下一个页面 3 go() // 传1等于forward,传-1等于back
Location 和浏览器地址相关的对象
href // 获取和设置浏览器的路径
事件
onclick 点击事件
Document 文档对象
1 alert() // 弹出提示框 2 confirm("参数") // 询问框,提供俩按钮,确定和取消;如果点击是确定,返回true,如果点击取消,返回false 3 moveBy() // 移动浏览器 4 setInterval("函数",毫秒值) // 定时相关的,每隔毫秒值执行一次函数,返回唯一的id值 5 setTimeout("函数",毫秒值) // 到了毫秒值后执行一次函数,返回唯一的id值 6 clearInterval(id的值) // 清除定时 7 clearTimeout() 8 close() // 关闭浏览器的窗口 9 open() // 打开浏览器窗口
属性
opener 返回对创建此窗口的窗口的引用
win open() 弹出baidu的窗口
document对象方法
document.getElementById("nameId"); // 获取到是input标签的对象
DOM 文档对象模型(Document Object Model)
文档:标记型文档(HTML/XML)
对象:封装属性和行为(方法)
模型:共性特征的体现
DOM解析HTML
通过DOM的方法,把HTML全部(元素(标签)、文本、属性)都封装成了对象
<span id="spanId">文本</span>
DOM想要操作标记型文档先解析
DOM解析HTML(浏览器就可以HTML)
DHTML不是一种编程语言
html :封装数据。 <span>展示给用户的数据</span>
css :设置样式(显示效果)
dom :操作HTML(解析HTML)
js :提供逻辑(判断语句,循环语句)
Document:代表整个文档
方法
1 getElementById("id的值"); // 通过元素的id的属性获取元素(标签)对象。 2 getElementsByName("name属性值"); // 通过名称获取元素对象的集合(返回数组) 3 getElementsByTagName("标签名称"); // 通过标签名称获取元素对象的集合(返回数组) 4 write("文本的内容(html的标签)") // 把文本内容写到浏览器上 5 createElement("元素名称"); // 创建元素对象 6 createTextNode("文本内容") // 创建文本对象 7 appendChild("子节点") // 添加子节点
Element对象
获取元素对象
1 getAttribute("属性名称"); // 获取属性的值 2 setAttribute("属性名称","属性的值"); // 设置或者修改属性的值 3 removeAttribute("属性名称"); // 删除属性
获取元素下的所有子节点
ul.getElementsByTagName();
Node节点对象
nodeName :节点名称
nodeType :节点类型
nodeValue :节点的值
parentNode 获取父节点(永远是一个元素节点)
IE6-8
1 firstChild // 第一个节点 2 lastChild // 最后一个节点 3 nextSibling // 下一同级节点 4 previousSibling // 上一同级节点
IE9-11 Chrome FireFox
1 firstElementChild // 第一个节点 2 lastElementChild // 最后一个节点 3 nextElementSibling // 下一同级节点 4 previousElementSibling // 上一同级节点
1 <ul> 2 <li>北京</li> 3 </ul> 4 // 如果通过ul获取北京的子节点,使用是 ul.firstElementChild; 获取北京的子节点(IE9-11 Chrome FireFox) 5 // 但是如果IE6-8,需要使用firstChild;
1 <span id="spanId"> 2 文本内容 3 </span> 4 // 使用span的标签获取span中间的文本内容(也是对象),需要使用firstChild;(不管是什么浏览器)
方法
1 hasChildNodes() // 检查是否包含子节点 2 hasAttributes() // 检查是否包含属性 3 appendChild(node) // 父节点调用,在末尾添加子节点 4 insertBefore(new,old) // 父节点调用,在指定节点之前添加子节点 5 replaceChild(new,old) // 父节点调用,替换节点 6 removeChild(node) // 父节点调用,删除节点 7 cloneNode(boolean) // 不是父节点调用,复制节点,boolean如果是true,复制子节点,如果是false,不复制子节点,默认是false
innerHTML :获取和设置文本内容。
属性
获取文本内容
设置文本内容
事件
onclick 点击事件
onload 加载事件
onfocus 获取焦点事件
onblur 失去焦点事件
全选/全不选/反选的练习
1 <input type="checkbox" /> 2 // 指定默认值:checked 只要出现在<input type="checkbox" />,对号就勾上了。
鼠标移动的事件
onmousemove
onmouseout
onmouseover
鼠标点击事件
onclick 单击
ondblclick 双击
加载和卸载
onload 加载
onunload 卸载
获取焦点和失去焦点
onfocus 获取焦点
onblur 失去焦点
键盘
onkeyup 按下抬起
改变事件
onchange
控制表单的提交
onsubmit