JavaScript

什么是JavaScript?

  • JavaScript是运行在客户端的解释性脚本语言
    客户端是浏览器(IE、Firefox、Chrome、Safari、Opera)
    编译型:
    将程序的源代码编译成二进制机器语言,
    形成编译文件(.dll或.exe)
    以后在执行时可以直接调用编译的结果
    .dll—>Dynamic Link Library

    优点:一次编译,多次执行

    解释型:
    在每次执行时都需要进行编译,执行的过程;
    而且需要编译器进行编译、执行的操作
    解释性脚本是指程序语言的一种执行方式;

  • JavaScript与java之间不存在任何关系

  • JavaScript最早由网景公司在其Netscape浏览器中推出
    Microsoft在其IE浏览器推出JScript与其抗衡.
    欧洲计算机制造商协会(ECMA)在借鉴JavaScript1.5的基础上推出ECMAScript,
    从而成为所有脚本语言的标准.ECMAScript(ES)最新的版本为ECMAScript-6(简称ES6)

   

JavaScript的语法结构

<script></sctipt>

第一步:创建js文件并且写入相关的代码
第二步:在网页文件内调用相关的js文件
说明:

  • JS严格区分大小写
  • 每行JS代码必须以分号结尾
  • JavaScript文件的扩展名为.js
  1. 为什么要采用css文件合并/js文件合并:
    减少HTTP请求次数,减轻服务器请求压力
  2. 如何实现css文件/js文件合并:
    前端框架(如天猫的kissy)

   

JavaScript变量(Varaible)

  • 变量
    变量是指存储在计算机内存中有名称的信息,
    其值在程序运行期间可以发生变化

  • 声明变量
    var 变量名称;
    var 变量名称=值;

  1. 变量名称的命名规则:

    1. 变量名称必须以字母或下划线开头,包含字母、数字、下划线
    2. 变量名称禁止与系统关键字相同
    3. 变量名称必须遵守“驼峰标记法”
    4. 变量名称“必须”含义明确
  2. 系统关键字:
    var、if、else、switch、case、break、
    default、for、while、function

  3. ECMAScript关键字:
    class、float、boolean、object、extends、
    public、protected、private

  • 数据类型
  1. 字符型(string)
    后面必须用双引号或单引号括起来
    转义符:
    \n换行 \r回车 \t水平制表符 \v垂直制表符 \f换页(走纸)
    ----以上成为非打印字符(打印机打印不出来的)----
    \反斜线 '单引号 ""双引号

  2. 数值/字型(number)
    包括整形和浮点型,可以带有符号位
    可以存储八进制、十进制、十六进制的数字

    八进制的表示方法为0[0-7]+
    十六进制的表示方法为0[x|X][0-9a-fA-F]+
    (以0开头,正则表达式的写法,+至少一个)

  3. 布尔类型(boolean)
    只能存储true或false

  4. 未定义(underfined)
    以下变量的值为underfined

    1. 声明但没有赋值的变量
      var n;
      console.log(typeof(n));
      // 值为 undefined(空), 类型是undefined
    2. 声明但赋值为undefined的变量
      var p = undefined;
      console.log(p );//值是undefined
      console.log(typeof( p));//数据类型是undefined
    3. 引用对象不存在的属性
      var obj={};
      console.log(typeof(obj.username));
      //username不存在

    在 JavaScript 中, undefined 是一个没有设置值的变量。
    typeof 一个没有值的变量会返回 undefined。

  5. 对象(obj)
    属性与方法的集合体
    格式:
    {
    “属性名称”:值,

    方法名称:function([参数]){

    }
    }
    示例:

var obj={
	'id':1,
	'username':'王五',
	 say:function(sth){
		return '他说:'+sth;
	 }
 };
 console.log('用户ID:'+obj.id);
 console.log('用户名:'+obj.username);
 console.log(obj.say('大家好,我是xxx'));
  1. null(空对象)
    其作用是为了断开继承链(原型链)
    示例:
var n = null;
console.log(n);//值是null
console.log(typeof(n));//数据类型是object
// 值为 null(空), 但类型为对象
  1. function(自定义的函数)
    可以重复执行的代码段
    示例:
<script src='common.js'></script>
<script>
	//调用自定义函数
	console.log(add(3,7));
	console.log(add(5,12));
	console.log(typeof(add));//数据类型是function
	注意:typeof里的add不能加引号,不然成了字符串
		 add后面不能加括号add(),这样是错的!!!
</script>
// 在common.js文件里面声明这个函数
//声明自定义函数
function add(x,y)
{
	return x+y;
}

注意:
通常在外部的js文件里写函数,这样可以多次调用

   

运算符

  • 运算符:+(字符串的拼接)

  • 数学运算符:+(正号) -(负号) * / %(取模取余) + -

  • 比较运算符:>、>=、==(相等) !=(不等)、===(全等)、!==(不全等)、<=、<
    全等:1.值相等、2.数据类型相同
    注意:

console.log(2=='2');//true值相同
console.log(2==='2');//false值相同但数据类型不同`
console.log(undefined==null);//true
console.log(undefined===null);//false数据类型不同
null 和 undefined 的值相等,但类型不等:
typeof undefined             // undefined
typeof null                  // object
null === undefined           // false
null == undefined            // true
  1. 逻辑运算符:!、&&、||
    短路现象:
    在进行&&或||运算符时,只有第一个表达式的值可以
    确定整个表达式结果时,后续表达式将忽略执行
    示例:
var i = 2;
var m = 1;
console.log(i>2 || ++m);// true
console.log(i);// 2
console.log(m);// 1 因为i>2或运算发生了短路现象,后面的++m忽略执行
  1. 自增/自减运算符
    i++、i–后缀形式:先使用,后加减
    ++i、–i前缀形式:先加减,后使用

  2. 赋值运算符:
    =、+=、-=、*=、/=、%=

  3. 其他划分:
    按参加运算的操作数的数量来划分:
    单目运算符:只有一个操作数,如负数(-),逻辑非(!)
    双目运算符:有两个操作数,如加号(+),大于(>)等等
    三目/元运算符:expression?value1:value2
    表达式为真返回1,表达式为假返回2
    如:var p=m>2?5:3

<script>
	var m = 7;
	if(m>=2){
		var p = 5;
	}
	else{
		var p = 3;
	}
	console.log(p);
	//简化成
	var m = 7;
	var p = m>=2 ? 5 : 3;
	console.log(p);
</script>

   

运算符的优先级

一、二、三、赋值(123指单目/双目/三目运算符)
算数、比较、逻辑

   

  1. if语句
    示例:
//true为女,false为男
var sex=false;
if(sex){
	console.log('男');
}else{
	console.log('女');
}
  1. switch语句
    示例:
switch(expression){
	case1:
		...
		break;
	case2:
		...
		break;
	case N:
		...
		break;
	default:
		...
		break;
}

说明:

  1. if语句的条件表达式只能为布尔类型(可能存在数据类型的自动转换)
    switch语句的表达式可以为任意数据类型(布尔除外)

  2. if语句每次执行时都将对变量进行取值操作;
    而switch只进行一次取值操作

  3. switch语句进行的是全等运算!!!

   

循环语句

  1. for语句
    for(expr1;expr2;expr3){
    …;(语句块后面注意加分号)
    }

    说明:
    expr1,在循环之前无条件执行一次,一般用于变量初始化;
    expr2,在循环前执行一次,以判断能否进入循环体;
    expr3,在循环后执行一次,一般用于步长的计算;
    for语句的表达式可以省略其中任何一个或全部

  2. while语句
    while(条件表达式){

    …(语句块后面记得加分号)
    }
    说明:
    1.死循环:指条件永远为真的循环语句
    2.for语句和while语句同属“当型循环(先判断,后执行)”,所以可以互换

  3. do…while循环
    do{


    }while(条件表达式);
    说明:
    1.do…while语句是先执行,后判断
    2.do…while语句至少执行一次;而当型循环(for,while)至少执行0次

  4. for…in语句
    for(key in array){

    }
    示例:

var arr = [];
arr[0] = '孙悟空';
arr[2] = '猪八戒';
arr[3] = '白骨精';
arr[9] = '唐僧';
for(key in arr){
	console.log(arr[key]);
}
打印出:孙,猪,白,唐

5.break语句
跳出(结束)本次的switch及循环语句

6.continue语句
跳过当前的循环而进行下一次的循环

   

补充

  1. HTML实体(HTML Entity):
    &gt:>
    &lt:<
    &amp:&
    &39:’
    &apos:"
    &nbsp:空格
    其他的去网上查

  2. UUID,通用唯一识别码,其形态为8-4-4-4-12,
    其作用是为保证文件名称的唯一性

  3. webp格式是Google推出的一种图像格式,其仅被Google
    Chrome浏览器支持,其特点是相比jpeg文件来说,字节数更小

  4. 京东(jd.com)的商品展示图片采用动态缩放实现Lua

   

内置对象

  • String对象
  1. 构建String对象:
    直接量方式
    'string’或"string"

    构造函数方式
    new String(‘string’)

  2. 属性:
    length
    描述:返回字符串的长度
    语法:int object.length

  3. 方法:
    toLowerCase()
    描述:将字符转换小写字母
    语法:string object.toLowerCase(void)
    toUpperCase()
    描述:将字符转换大写字母
    语法:string object.toUpperCase(void)
    示例:
    var str=‘javascript’;
    console.log(str.toUpperCase());
    substr()
    描述:截取字符串,从起始索引号提取字符串中指定数目的字符
    语法:string object.substr(int start[,int length])
    说明;
    1.字符串从0开始编号
    2.如果省略length参数,则返回到字符串结尾之间的字符
    3.如果start为负数,则倒数

     	示例:
     		console.log(str.substr(0,4).toUpperCase());
     		截取从0位开始后的4位数,注意,这里4是长度
     		//截取從字符結束位置倒數的字符
     		console.log(str.substr(-3));
     
     		//將字符串实现反转
     		var str='javascript';
     		var temp='';
     		for(var n=str.length-1;n>=0;n--){
     			temp+=str.substr(n,1);
     		}
     		console.log(temp);
    

    substring
    描述:截取字符串,提取字符串中两个指定的索引号之间的字符
    语法:string object.substring(int start[,int end])
    说明:
    包含起始位,不包含结束位
    如果省略end参数,则返回到字符串结尾之间的字符;

    indexOf()
    描述:返回字符串中检索指定字符第一次出现的位置
    语法:int object.indexOf(string)
    注意:indexOf() 方法对大小写敏感!
    如果要检索的字符串值没有出现,则该方法返回 -1。

    lastIndexOf()
    描述:返回字符串中检索指定字符最后一次出现的位置
    如果没有,则返回-1
    语法:int object.lastIndexOf(string)
    注意:lastIndexOf() 方法对大小写敏感!
    如果要检索的字符串值没有出现,则该方法返回 -1。

    replace()方法
    描述:字符串替换
    语法:
    string obejct.replace(string search,string replacement)
    示例:
    //惰性替换,只替换一个
    var str=‘javascript’;
    console.log(str.replace(‘a’,‘w’));//jwvascript

    string obejct.replace(object RegExp,string replacement)

    split()
    描述:使用分隔符拆分字符串
    语法:
    array object.split(delimiter)

    array object.split(RegExp)
    用正则表达式拆

  4. ES6新增方法
    trim()
    描述:删除第一个之前及最后一个字符之后的空白
    移除字符串首尾空白
    语法:string object.trim(void)

    startsWith()
    描述:检测字符是否以指定字符开头
    语法:bool object.startsWith(string)
    返回true/false
    示例:console.log(‘java’.startsWith(‘ja’));//true

    endsWith()
    描述:检测字符是否以指定字符结尾
    语法:bool object.endsWith(string)
    示例: console.log(‘java’.endsWith(‘w’));//false

  • Math对象
    Math对象是一个静态对象
  1. 属性:
    Math.PI ,圆周率
    Math.SQRT2 ,2的平方根

  2. 方法:
    Math.ceil()
    描述:进一取整
    语法:number Math.ceil(number)
    Math.floor()
    描述:舍一取整
    语法:number Math.floor(number)
    Math.pow()
    描述:幂运算
    语法:number Math.pow(base,exp)
    Math.sqrt()
    描述:平方根
    语法:number Math.sqrt(number)
    Math.min()
    描述:最小值
    语法:number Math.min(num1,num2,…)
    Math.max()
    描述:最大值
    语法:number Math.max(num1,num2,…)
    Math.random()
    描述:产生介于0~1之间的随机数(0<=X<1)
    语法:number Math.random(void)
    示例:console.log(Math.random());
    Math.round()
    描述:四舍五入(仅保留到整数位)
    语法:number Math.round(number)
    示例:
    console.log(Math.round(7.25));//7
    console.log(Math.round(7.58));//8

  • Date对象
  1. 构建Date对象:
    new Date()
  2. 方法:
    getYear()
    描述:获取年份(从公元1900年到现在经历的年份)
    语法:int object.getYear(void)
    getFullYear()
    描述:获取年份
    语法:int object.getFullYear(void)
    示例:
//构建Data对象
var date=new Date();
//获取年份
var year = date.getYear();
console.log(year)//118
var fullyear=date.getFullYear()
console.log(fullyear);//2018

getMonth()
描述:获取月份(取值范围为0~11)
比如7月,输出为6
要想获取真正的月份,在后面加1
语法:int object.getMonth(void)
getDate()
描述:获取日期(xx号)
语法:int object.getDate(void)
getDay()
描述:获取星期的第几天(0为星期日,依次类推)
语法:int object.getDay(void)
getHours()
描述:获取小时数
语法:int object.getHours(void)
getMinutes()
描述:获取分钟
语法:int object.getMinutes(void)
getSeconds()
描述:获取秒数
语法:int object.getSeconds(void)
getMilliseconds()
描述:获取毫秒数
语法:int object.getMilliseconds(void)
getTime()
描述:返回从1970年到现在的毫秒数
语法:int object.getTime(void)
toUTCString()/toGMTString()
描述:将日期转换成UTC/GMT格式
语法:
string object.toUTCString(void)
string object.toGMTString(void)

ES6新增方法
Date.now()静态方法
描述:返回从公元1970年到现在的毫秒数
语法:int Date.now(void)
说明:该方法为静态方法

  

  • Array对象
  1. 构建Array对象:
    直接量方式
    [value,…];
    构造函数方式
    new Array(length)
    new Array(value,…)

  2. 属性:
    length
    描述:获取数组成员的数量
    语法:int object.length

  3. 方法:
    unshift()
    描述:在数组的开头添加一个或多个成员,并返回数组的新长度
    语法:int object.unshift(value,…)
    示例:

var arr = ['C','D','E','F'];
var count = arr.unshift('A','B');
console.log('数组包含'+count+'个成员,他们是:'+arr);
//数组包含6个成员,他们是:A,B,C,D,E,F

push()
描述:在数组的末尾添加一个或多个成员,并返回数组的新长度
语法:int object.push(value,…)
shift()
描述:删除数组的第一个成员,并且返回该成员
语法:mixed object.shift(void)
示例:

var first = arr.shift();
console.log('数组包含'+arr.length+'个成员,
他们是:'+arr+'成员'+first+'被删除');

pop()
描述:删除数组的最后一个成员,并且返回该成员
语法:mixed object.pop(void)
join()
描述:将数组成员使用指定的分隔符连接成字符串
语法:string object.join(delimiter)
delimiter是分隔符
isArray()
描述:判断是否为数组(静态方法)(ES6新增的)
语法:bool Array.isArray(obj)
map()
描述:数组成员依次调用回调函数,并且返回一个新数组
语法:
array object.map(function(value[,index]){

})
示例:

var data=[1,2,3,4,5];
var arr = data.map(function(val){
	return Math.pow(val,3);
});
console.log(arr);
  1. 数组遍历(ES6新增):
    forEach()语句
    语法:
    object.forEach(function(value[,index]){


    });
    示例:
//forEach遍历
var arr = [];
arr[0] = '孙悟空';
arr[2] = '猪八戒';
arr[3] = '白骨精';
arr[9] = '唐僧';
arr.forEach(function(val,key){
	console.log(val + ',' + key);
});
			在控制台打印出:
			孙悟空,0
			猪八戒,2
			白骨精,3
			唐僧,9
  • Regular Expression对象(正则表达式对象)
  1. 构建正则表达式对象
    直接量方式
    /正则表达式/修正符
    构造函数方式
    new RegExp(‘正则表达式’,‘修正符’)
  2. 正则表达式
    1. 元字符:
      \d 匹配数字,等价于[0-9]
      \D 匹配非数字,等价于[^0-9]
      \s 匹配任意的空白字符,等价于[\n\r\t\v\f]
      \S 匹配任意非空白字符,等价于[^\n\r\t\v\f]
      \w 匹配任意的字母,数字及下划线,等价于[0-9a-zA-Z_]
      \W 匹配任意的非字母、数字及下划线,等价于[^0-9a-zA-ZA_]
      . 匹配除换行外的任意字符

    2. 量词:
      ? 出现0次或1次,等价于{0,1}
      * 至少出现零次,等价于{0,}
      + 至少出现1次,等价于{1,}
      {m} 出现m次
      {m,} 至少出现m次
      {m,n} 至少出现m次,至多n次

    3. 其他:
      | 或者
      ^ 以指定字符开头
      $ 以指定字符结尾
      […] 表示在范围之内,如[0-9]
      [^…] 表示不在范围之内,如[^3-5]

    4. 转义符:
      \n \r \t \v \f换行、回车、水平制表符、垂直制表符、换页(走纸)
      \ 反斜线
      . 点
      | 竖线
      * 星号
      ? 问号

    5. 捕获组与非捕获组:
      捕获组
      (…)
      (((a)(b))©)
      从左往右数左括号为5
      从左往右匹配的
      非捕获组
      (?:…)
      示例:

//将以下时间格式用一行语句写成2018-12-25
var date = '12/25/2018';
date = date.replace(/(\d{1,})\/(\d{1,})\/(\d{4})/,'$3-$1-$2');
document.write(date);

注意:
$1匹配第一个捕获组
$2匹配第二个捕获组

  1. 修正符:
    g(global) 全局
    i(ignore) 忽略大小写

方法:
test()
描述:检测字符串是否符合正则表达式规范
语法:bool object.test(string)
示例:

//检测数字是否为正整数
var n = 'a123';
var bool = /^[1-9]\d*$/.test(n)
console.log(bool);
//false

    

DOM编程

JavaScript的组成

JavaScript由ECMAScript(简称ES)、DOM和BOM组成;

  1. ECMAScript:关键字、保留关键字、流程控制语句、数据类型、内置对象;

  2. DOM:提供操作HTML/XML文档相关的API;
    DOM:由DOM Core、HTML DOM和XML DOM组成;
    DOM Core:提供处理HTML和XML文档的API
    HTML DOM:提供处理HTML文档的API
    XML DOM:提供处理XML文档的API

  3. 浏览器对象模型(BOM)对浏览器窗口进行访问和操作

节点

在DOM中一切皆节点
Node--->Element元素节点
Attr属性节点
Document文档节点
CharacterData字符数据-->(Text,Comment)
	注意:文本存在文本节点内
  • 节点的类型:
  1. 代表元素节点(HTML标记)
  2. 代表属性节点(指HTML标记的属性)
  3. 代表文本节点(指纯文本)
  4. 代表注释节点(指HTML的注释)
  5. 代表文档节点(指整个HTML文档)
  • 节点的关系:
  1. 子节点:一个节点是另一个节点的直接下一级节点
    b就是i的子节点
  2. 父节点:一个节点是另一个节点的直接上一级节点
  3. 兄弟节点:同一个父节点的所有子节点
  • 节点的属性:
    nodeName
    描述:获取节点的名称
    语法:string node.nodeName

    nodeValue
    描述:获取节点值
    语法:string node.nodeValue

    nodeType
    描述:获取节点的类型(上面有编号)
    语法:int node.nodeType
    示例:

    console.log(document.nodeType);
    //9 (代表文档节点)
    console.log(document.documentElement.nodeName);
    //HTML
    console.log(document.documentElement.nodeType);
    //1
    注意:
    	document返回Document对象
    	而Document对象的documentElement属性返回Element对象
    	而Element对象又是从Node对象来继承的
    	所以此时使用的nodeName,nodeType属性都要是Node对象的
    

    childNodes
    描述:返回节点内所有的子节点形成的集合(数组)
    语法:NodeList node.childNodes

    节点的方法:
    appendChild()
    描述:追加子节点
    语法:Node node.appendChild(Node)
    说明:返回的是新插入的子节点
    removeChild()
    描述:删除子节点
    语法:Node node.removeChild(node)
    如a.removeChild(b)

  • document对象(继承自Node)

  1. 属性:
    documentElement
    描述:返回文档的跟元素
    语法:Element document.documentElement

  2. 方法:
    getElementById()
    描述:根据对象ID来获取元素(查)
    语法:Element document.getElementById(string id)

    createElement()
    描述:创建元素节点
    语法:Element document.createElement(string tag)

    getElementsByTagName()
    描述:获取文档中中指定标记名称所形成的集合(数组)
    语法:NodeList document.getElementsByTagName(tagName)
    如:document.getElementsByTaName(‘p’)
    获取整个文档中所有的p标签

    createTextNode()
    描述:创建文本节点
    语法:TextNode document.createTextNode(string)
    返回的是文本节点

  • Element对象(继承自Node)
  1. 方法:
    getAttribute()
    描述:获取属性值
    语法:string Element.getAttribute(string name)

    setAttribute()
    描述:设置属性
    语法:void Element.setAttribute(string name,string value)

    removeAttribute()
    描述:删除属性
    语法:void Element.removeAttribute(string name)

    hasAttribute()
    描述:返回是否存在指定属性
    语法:bool Element.hasAttribute(string name)

    getElementsByTagName()
    描述:获取指定元素中包含指定标记名称所形成的集合(数组)
    语法:NodeList Element.getElementsByTagName(tagName)

    //如获取div内的所有p标签段落数量
    //获取div对象
    var divEle = document.getElementById('div');
    //获取div内所有的p
    var pEles = divEle.getElementsByTagName('p');
    console.log(pEles.length)
    
  • Node对象
  1. 属性(接上节点的属性)
    firstChild
    描述:返回指定节点的第一个子节点
    语法:node node.firstChild

    lastChild
    描述:返回指定节点的最后一个子节点
    语法:node node.lastChild

    parentNode
    描述:返回当前节点的父节点
    语法:node node.parentNode

    nextSibling
    描述:返回当前节点的下一个兄弟节点(弟弟)
    语法:node node.nextSibling

    previousSibling
    描述:返回当前节点的上一个兄弟节点(哥哥)
    语法:node node.previousSibling

    <script>
    	function changeAttr(){
    		var pEle1 = document.getElementById('p');
    		var pEle2 = pEle1.nextSibling.nextSibling;
    		pEle2.setAttribute('align','center');
    	}
    </script>
    <p id='p'>段落1</p>
    <p>段落2</p>
    <input type="button" value="单击我,让第二个段落居中" 
    	onclick="changeAttr()">
    //注意:
    //段落1和段落2之间有个空格,空的文本节点。千万注意!!!
    
  2. 方法:
    replaceChild
    描述:节点替换
    语法:node node.replaceChild(newChild,oldChild)

HTML DOM

HTML DOM提供针对处理HTML文档的API

  • 套路:
  1. 选定对象 selector
  2. 控制->属性、内容、节点的增、删
  • 选取对象
    Element document.getElementById(string id)
    说明:根据ID获取文档中唯一的HTML元素

    NodeList document.getElementsByTagName(string tagName)
    说明:获取文档中由指定的标记组成的集合(数组)

    NodeList Element.getElementsByTagName(string tagName)
    说明:获取元素中由指定的标记组成的集合(数组)

    getElementsByName()方法
    描述:获取文档中name属性相同的对象组成的集合(数组)
    说明:针对表单元素使用
    语法:NodeList document.getElementsByName(string name)

  • 属性控制

  1. 对于单个单词的HTML标记属性即HTML DOM对象属性(class属性除外)

  2. 对于合成词的HTML标记属性(如table标记的cellpading、cellspacing属性)
    在HTML DOM编程时,采用"驼峰标记法"命名
    (如cellPadding、cellSpacing)
    示例:

    //获取对象
    var tableEle = document.getElementById('table');
    //设置属性
    tableEle.width = '500';
    tableEle.border = '3';
    //注意:cellSpacing、cellPadding的写法
    tableEle.cellSpacing='0';
    tableEle.cellPadding='20';
    
  3. 对于HTML标记的class属性,在HTML DOM编程中时使用className取代
    (因为class是ECMAScript中的关键字)

    //获取对象
    var pEle = document.getElementById('p');
    //设置属性(注意className的写法)
    pEle.className='f1';
    
  4. 对于HTML标记的布尔属性(如单/复选框的checked、列表项的selected属性)
    在HTML DOM编程时采用boolean类型表示
    示例:

    //获取对象
    var checkboxEle = document.getElementById('checkbox');
    //设置属性(布尔类型的的属性采用布尔来表示)
    //选中
    checkboxEle.checked = true;
    //禁用
    checkboxEle.disabled = true;
    
  5. 在HTML DOM编程时,某些HTML DOM对象有自己特有的属性/方法

    1. form对象:
      submit(void)提交表单
      reset(void)重置表单

    2. input对象:
      focus(void)获取焦点
      blur(void)失去焦点

    3. select对象:
      value属性
      获取当前被选定的列表项的值
      option对象
      创建option对象:new Option()
      add(object option)方法
      在select对象内添加option对象
      remove(integer index)
      删除select对象的option(不用,用length属性就可以解决)
      length属性
      获取/设置select对象内的option数量

      列表框–onchange事件

  6. HTML标记的style属性在HTML DOM编程时形成
    CSSStyleDeclaration/CSS2Properties对象

    控制HTMLDOM对象的行内样式的语法是:
    object.style.属性名称

    1. 如果CSS样式属性为单个单词,则直接书写

      //获取DIV对象
      var divEle = document.getElementById('wrapper');
      //设置div行内样式
      divEle.style.width = '300px';
      divEle.style.height = '200px';
      
    2. 如果CSS样式属性为合成词,则先将短横线去掉后再采用"驼峰标记法"命名
      (如font-size,改为fontSize)

      //设置div对象的行内样式
      divEle.style.fontSize = '24px';
      divEle.style.textAlign = 'center';
      divEle.style.fontFamily = 'Microsoft Yahei';
      
  • 控制对象(内容)
    1. innerText 不能解析HTML标记
    2. innerHTML 可以解析HTML标记
    示例:

    var pEle = document.getElementById('p');
    pEle.innerText='<b>你们</b>';
    //单击后显示:<b>你们</b>
    var pEle = document.getElementById('p');
    pEle.innerHTML='<b><i>我们</i></b>';
    //单击后显示:我们
    
  • 控制对象(元素的增删改)
    在HTML DOM编程时除极少数对象有自己的创建/删除方法外,
    其他的都需要使用DOM Core的方法进行增加/删除操作

    极少数对象:
    1. select/option对象(见上)
    2. Images对象:
    创建对象:new Image([width,height])
    示例:

    //创建图像对象
    var imageEle = new Image();//相当于<img>
    //设置属性
    imageEle.src='images/a45a56a.jpg';//<img src='...'>
    //将新建的图像添加到文档
    document.body.appendChid(imageEle);
    
  1. table对象(不用管)

节点的层次关系只能通过DOM Core的相关方法来实现
 

document对象
  1. 属性:
    title
    描述:获取/设置标题栏信息
    语法:document.title = value 获取

    var 变量名称 = document.title 设置

    head
    描述:获取文档的head对象
    语法:Element document.head

    body
    描述:获取文档的body对象
    语法:Element document.body

    images(了解)
    描述:返回文档中所有的图像组成的集合(数组)
    语法:NodeList document.images
    forms(了解)
    描述:返回文档中所有的表单组成的集合(数组)
    语法:NodeList document.forms

    links(了解)
    描述:返回文档中所有的标记组成的集合(数组)
    语法:NodeList document.links

    anchors(了解)
    描述:返回文档中所有的< a>标记组成的集合(数组)
    语法:NodeList document.anchors

  2. 方法:
    querySelectorAll()
    描述:返回由使用指定的CSS选择器组成的集合(数组)
    语法:NodeList document.querySelectorAll(selector)
    说明:该方法支持所有CSS3选择器

    querySelector()
    描述:返回由使用指定的CSS选择器对象的第一个元素
    语法:Element document.querySelector(selector)

Element对象
  1. 属性:
    tagName
    描述:获取元素的标记名称
    语法:string Element.tagName

  2. 方法:
    querySelector()
    描述:返回由使用指定的CSS选择器对象的第一个元素
    语法:Element Element.querySelector(selector)

    querySelectorAll()
    描述:返回由使用指定的CSS选择器组成的集合(数组)
    语法:NodeList Element.querySelectorAll(selector)

    注意:
    < p title=“我是一个说明文本”>中华人民共和国< /p>
    这里的title的不是网页标题,而是说明文本

   

BOM

  • BOM(Browser Object Model)
    浏览器对象模型,提供与浏览器相关的API
    window对象是BOM的顶级对象,代表浏览器窗口或iframe或frame

  • 属性(window对象):
    document
    描述:返回HTMLDocument对象
    history
    描述:返回History对象
    screen
    描述:返回Screen对象
    navigator
    描述:返回Navigator对象
    location
    描述:返回Location对象
    Math
    描述:返回Math对象

  • 方法(window对象)
    1、alert()
    描述:弹出警示对话框(只有一个确定按钮)
    语法:window.alert(string)

    2、confirm()
    描述:弹出询问对话框(有确定和取消两个按钮)
    语法:bool window.confirm(string)

    3、setInterval()
    描述:每间隔指定的时间执行相关的代码
    语法:int window.setInterval(function,milliseconds)
    注意:milliseconds是毫秒,2000就是2秒

    4、clearInterval()
    描述:清除由setInterval()设置的timeId
    语法:window.clearInterval(int timeId)

    5、setTimeout()
    描述:间隔指定的时间后执行相关的代码(执行一次)
    语法:int window.setTimeout(function,milliseconds)

    6、clearTimeout()
    描述:清除由setTimeout()设置的timeId
    语法:window.clearTimeout(int timeId)

    注意:
    56基本不用(比如注册许可协议的“我同意(5)”都是循环的)

    var timeId = window.setInterval(function(){
    	document.getElementById('agree').value = '我同意('+i+')';
    	if(i==0){
    		window.clearInterval(timeId);
    		document.getElementById('agree').value = '我同意';
    		//禁用设置为假就是启用
    		document.getElementById('agree').disabled = false;
    	}
    	i--;
    },1000);
    

    7、parseInt()
    描述:转换成整数
    语法:int parseInt(value)

    console.log(parseInt(3.7999)); //3
    console.log(parseInt('379')); //379合法的数字字符串开头
    console.log(parseInt('3e7')); //3合法的数字字符串开头
    console.log(parseInt('e37')); //NaN(Not a Number)非法的数字字符串开头
    

    8、parseFloat()
    描述:转换成浮点数
    语法:float parseFloat(value)

    console.log(parseFloat(3.7999)); //3.7999
    console.log(parseFloat('379')); //379合法的数字字符串开头
    console.log(parseFloat('3e7')); //3000000合法的数字字符串开头
    console.log(parseFloat('e37')); //NaN(Not a Number)非法的数字字符串开头
    

    9、isNaN
    描述:检测值是否为NaN(Not a Number)
    语法:bool isNaN(value)

    console.log(isNaN('e2e'));//true
    

    说明:
    如果在当前窗口内控制当前窗口内的对象时,window对象可以省略

  • Location对象
    属性:

    1. href
      描述:获取/设置地址栏中的地址信息
      语法:location.href = string
      var 变量名称 = location.href
    2. search
      描述:获取地址栏"?"以后所有的参数
      语法:string location.search

    方法:
    reload()
    描述:重新加载文档
    语法:location.reload(void)

<body>
	<h1 id='random'></h1>
	<input type="button" value="单击我,刷新页面" onclick="refresh()">
</body>
<script>
	document.getElementById('random').innerHTML = Math.random();
	function refresh(){
		//刷新页面
		location.reload();
	}
</script>
  • Screen对象

    width属性
    描述:获取显示分辨率宽度
    语法:number screen.width

    height属性
    描述:获取显示分辨率高度
    语法:number screen.height

  • History对象
    back()方法
    描述:后退一步
    语法:history.back(void)

    forward()方法
    描述:前进一步
    语法:history.forward(void)

    go()方法
    描述:前进/后退
    语法:history.go(number)
    说明:如果为负数,则后退;否则前进

    注意:
    history.back()等价于history.go(-1)
    history.forword()等价于history.go(1)

  • Navigator对象
    userAgent属性(简称UA)
    描述:返回代理器信息
    语法:string navigator.userAgent

   

JavaScript事件

  • 鼠标事件
    onclick
    onmouseover
    onmouseut

  • 键盘事件
    onkeydown 键盘的按键按下
    onkeyup 释放键盘按键
    onkeypress 按下并释放键盘按键

  • 表单对象
    onsubmit 提交表单
    onreset 取消表单

  • 列表框对象
    onchange

  • body对象
    onload
    onunload
       

JSON

  • JSON基础
    JSON(JavaScript Object Notation)
    是一种轻量级的数据交换格式

    JSON的官网 http://www.json.org

  • JSON支持的数据格式
    数组:[value,…]
    对象:{property:value,…}

  • JSON的数据类型
    string
    number
    object(对象)
    boolean
    array(数组)
    null

  • JSON对象
    JSON.stringfy(array|object)
    object

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值