脚本语言是一种简单的程序,由ASCII字符构成。不需要编译,只需要适应的解释器(Interpreter)就可以执行。
服务器脚本语言和客户端脚本语言
JavaScript没有类的概念 var now = new Date(); 所以把对象实例也简称为对象。
<script type="text/javascript"></script>
<a href="javascript:alert('')">click me</a>
or click me
- 大小写敏感
- 换行符
- 分号
- 字符串型
- JavaScript没有字符类型(char),只有字符串。
- 数字型
- JavaScript没有整数型,只有浮点数
- NaN,NaN不与任何数字相等,包括NaN,需要使用isNaN()来判断运算结果是不是NaN
- 布尔
- 对象
- 数组
- 函数
function可执行的JavaScript代码 - null 空
JS是无类型(Notype)语言,不需要制定变量数据类型,隐式转换 if(1){console.log("true")}
- 数字类型:字符串环境下可以隐式转换为“数字”,布尔环境中可以转换为true或false(0)
- 非空字符串: 数字环境下转换为字符串中的数字(“123” -> 123; “abc” -> NaN ),布尔环境下转换为true
- 空字符串: 转换为0,转换为false
- 字符串”true” 转换为1,转换为true
- 字符串“flase” 转换为0,转换为false
- null 字符串环境下转换为”null”,数字转换为0,布尔转换为false
- NaN: 字符串转换为”NaN”, 布尔转换为false
- undefined: 字符串转换为”undefined”,数字转换为NaN, 布尔转换为false
- true or false: 字符串转换为”true” or “false”, 数字转换为1或者0
- 转换成字符串
var arr = ['javascript','VBScript','Script'];
document.write{arr.toString()};
toString方法,除了数组以外,还有Date都想,Error对象,Number对象,Function函数等,都可以转换 - 基本数据类型转换
- 数字型转换为字符串,可以与一个空字符串相连 var s = 123 + “”;
- 字符串转换为数字,将其减0 var s = "123" - 0;
- 字符串或数字转换为布尔,可以将其连续使用两次
!运算符 var i = “true”; console.log(!!i);
- 整数常量
- 浮点常量
- 字符串常量
- 布尔常量
- 数组常量
- 转义字符
变量可称为标识符(Identifier)。
ASCII字符或_, 不能是数字,大小写敏感
要能看出作用
驼峰命名
不能写保留字
Notype
- 可重复定义变量
- 变量必须先定义后使用
- 给未定义的变量赋值
- 引用未赋值的变量
- Number
- Logical 布尔值,也叫逻辑值
- String
- Null
- Undefined
- 全局
- 局部 (函数体内)
- 变量优先级
- 函数内定义全局变量
不使用var 直接赋值
x = "abc" - 嵌套函数体中的变量的有效范围 函数可以嵌套,变量都可以在该函数体内以及嵌套的函数体内起作用,但是不能在父级以及父级以上内起作用。
Expression就是一个语句,可以是常量或变量,也可以是由常量和两边组成的语句
- 常量表达式
- 变量表达式
- 复合表达式
Operant是进行运算的常量或变量
- 一元运算符
- 二元运算符
- 三元运算符
?: - 算数运算符
- 比较运算符
- 字符串运算符
- 赋值运算符
- 位运运算符
- 逻辑运算符
- 特殊运算符
-
减法
-
减法
-
模
-
负号
-
正号
-
递增
-
递减
-
关系
-
等同
-
不等
-
不等同
-
小于
-
大于
-
大于或等于
-
小于或等于
-
in运算符 判断字符串是否属于数组或对象
-
instanceof运算符 判断对象与对象实例之间关系的运算符
-
字符串运算符
+ -
赋值运算符
= -
逻辑运算符
- 逻辑与
- 逻辑或
- 逻辑非
-
逐位运算符
- 逐位与
& - 逐位或
| - 逐位异或
^ - 逐位非
~ - 左移运算符
<< - 带符号的右移运算符
>> - 用0补足的右移运算符
>>>
- 逐位与
-
其他运算符
- 条件运算符
- new运算符
- void运算符 (void舍弃了结果)
- typeof运算符
- 对象属性存取运算符
. - 数组元素存取运算符
[] - delete运算符
- 内部核心属性和客户端属性不能删除
- var定义的变量不能删除
- 删除对象不存在返回true
- 删除为定义的变量返回true
- 逗号运算符
- 函数调用运算符
() - this运算符 不需要属性,代表当前对象
this[.属性]
-
运算符的优先级
- if
- if…else
- if…else if…else
- if…else if…
- if语句嵌套
- switch
- while
- do…while
- for
- for…in
- break
- continue
- throw语句
- try…catch…finally语句
- 综合应用
- 标签语句
- var语句
- function语句
- return语句
- with语句
- 空语句
- comment语句 (注释语句)
function 函数名 (参数1, 参数2...){
<语句块>
return 返回值
}
- 函数名通俗易懂
- 一个函数只实现一个功能
- 函数最好放在JS代码开头
- 合理安排函数的次序
- JS是一种无类型的语言,不会检测传递的参数是否符合要求
- 不会检测返回的值师傅符合函数的类型
- 只能出现在函数中,不能出现在选择语句或循环语句中
- 嵌套定义的函数只能在嵌套的函数中调用,不能在其他函数中调用。
var x = new Function(“参数1”, “参数2”, “…”, “函数体”);
- Function()构造函数可以动态定义和编译函数, function语句只能预编译。如果函数经常使用,应该避免使用Function()
- Function()构造函数定义函数时可以将函数定义写成表达式
- Function()可以在一个表达式中定义函数,而function语句不能
var 函数名 = function(参数1,参数2,...){函数体}
ex: var mySum = function(x, y){return x+y};
其实可以在function后写函数名 var mySum = function 临时函数名(x, y){return x+y}; 这种方法一般用在函数自身的递归上 var myFun = function ftemp(x){if(x<1) return 1; else document.write(x); return ftemp(x-1);}
- function语句可以在任何一个JS版本中使用,Function()构造函数只能在JS1.1或更高版本使用,表达式中定义只能在1.2或更高使用
- 只有function语句定义函数的方法不能在表达式中使用,其他两种都可以直接在表达式中定义函数
- 除了function语句定义函数的方法之外,其他两种使用起来都比较灵活,但是通常只使用一次,无需命名的函数中
- 除了function语句之外,如果其他两种方法的函数体中的语句比较多的话,看起来很臃肿
- 使用function语句定义函数和在表达式中定义函数的两种方法中,JS只会对函数解析和编译一次,而使用Function()构造函数定义的函数,每次调用函数,都会解析和编译一次。
- 直接调用 使用函数调用运算符(
()); - 事件处理
以下是一些可能出现的情况:
- 传递的参数类型与函数所需要的数据类型不符
- 传递的参数个数与函数定义的参数个数不匹配
- 判断传递的函数参数的个数
arguments.length - 获得实际传递参数的值
arguments不仅可以判断个数,还可以获得参数的值 - Arguments对象的应用
return 函数名(表达式)
arguments.callee()
获得函数定义的参数个数 函数的length属性可以在函数体之外使用
对象.prototype.属性 = "参数";
caller查看函数在那里被调用,如果是顶层caller返回值为null,否则返回调用该函数当前函数的Function对象的引用:
函数可以拥有自己的属性,和对象有点像。函数的属性与全局变量也有点像,但是函数的属性只属于函数本身,而不属于其他对象:
函数名.call(对象名,参数1, 参数2, ....)
myFun.call(myObject, 123,4, 56);
这句与一下代码实现的结果相同:
myObject.temp = myFun;
myObject.temp(123,4,56);
delete myObject.temp;
函数名.apply(对象名, 数组);
apply()要传入一个数组 apply()的另一个用法是放在其他函数内部
字符串处理,将非文字,数字转换成相应的ASCII
主要作用是将字符串指定为对象
判断是否为数字类型
parseInt(数据,底数)
底数是指出数值类型,如八进制就是8,十六进制就是16,二进制就是2,可以省略。
- 概念
- 属性
对象名.属性 - 方法
对象名.方法名(参数列表)
JS中可以使用new运算符调用构造函数创建对象。
var myObject = new Object()
var 对象名 = {属性名1:属性值1, 属性名2:属性值2, 属性名3:属性值3,...}
- 创建对象的同时设置对象的属性
- 创建对象的构造函数时设置对象的属性
- 先创建空对象,再设置对象属性 设置对象的属性时,不能使用var 由于对象也是一种数据类型,所以对象的属性值也可以是对象
取值: 变量名 = 对象名.属性名
赋值: 对象名.属性名=属性值
JS可以通过for...in来枚举对象的所有属性
for(var i in pen)
delete来删除对象的属性
创建对象时,如果没有初始化某个属性,那么该属性的值会自动设置为undefined.
不知道为什么js检测不过,但是网页上可以执行.所以效果在 6.4.3.html 内
JS没有正式“类”的概念,可以理解为构造函数就是类,使用构造函数创建对象,就是将类实例化。
- 什么是原型对象
- 原型对象的原理
- 修改对象原型
函数.prototype.属性 = "参数";constructor用于返回对象的构造函数 - 存储对象属性 只有读取对象属性时,才回使用到原型对象,存储对象属性,是不需要使用原型对象的。
new Object();
new Object(value);
如果没有制定value值,则Object不属于数组,也不属于布尔对象。
typeof运算符判断操作数的类型,无法判断对象的类型。
constructor属性可以判断一个对象的类型,其引用的是对象的构造函数
实际使用中很少查看对象类型,而是通过if来判断是否属于某种类型
object.toString()
和toString()类似,但是格式转化成适合本地的表示法
判断属性是否方法所自有的
object.propertyIsEnumerable(properyname)
properyname为对象的属性名
- properyname必须是object的属性
- properyname不能是继承过来的属性
- properyname是可以通过
for...in语句循环所枚举得到的属性 满足以上三点时候才回返回true
与propertyIsEnumerable方法类似,判断一个属性是否非继承的属性。
object.hasOwnProperty(properyname)
- properyname必须是object的属性
- properyname不能使继承过来的
判断一个对象是否另一个对象的原型对象
object.prototype.isPrototypeOf(object1)
返回与对象相关的原始值,如果原始值不存在,则返回对象本身
object.valueOf()
callee属性: 对当前正在执行的函数的引用
length属性: 传递给函数的实际参数的个数
-
创建布尔对象和转换布尔值 调用Boolean构造函数来创建一个布尔对象,将参数转换成一个布尔值
new Boolean(value)只是将弃参数转换成一个布尔值Boolean(value) -
toString(),将布尔对象转换成字符串
-
value(),返回布尔对象的布尔值
-
创建日期对象
new Date();new Date(str);`new Date(year,month, day, hours, minutes, seconds, milliseconds); ``new Date(milliseconds); `- str: 表示日期的字符串- year: 代表年份的数据
- month: 代表月份的数据
- day: 代表日期的数据
- hours: 代表小时的数据
- minutes: 代表分钟的数据
- seconds: 代表秒钟的数据
- milliseconds: 代表毫秒的数据
- milliseconds1: 代表距离1970年1月1日0点时的毫秒数
-
将日期对象转换为字符串
- date.toString(); 转换为本地时间
- date.toLocaleString(); 转换为本地时间,将日期转化为地方日期格式
- date.toUTCString(); 采用世界时间
- date.toGMTString(); 采用GMT时间,目前反对使用,尽量使用UTC
UTC是协调世界时(Coordinated Universal Time)的简称,GMT是格林尼治时(Greenwich Mean Time)的简称
-
将日期对象中的日期和时间转换为字符串 将对象时间的日期或时间转换为字符串
- date.toDateString() 采用本地时间
- date.toLocaleDateString(); 采用本地时间,显示为地方日期的格式
- date.toTimeString(); 将时间部分转换,采用本地时间
- date.toLocaleTimeString(); 显示为地方日期的格式
-
日期对象中的日期
- date.getYear(); 显示年份,不建议使用
- date.getFullYear(); 四位数完整显示年份
- date.getMonth(); 显示月份,0代表1月,11代表12月
- date.getDate(); 显示一个月中的某一天
- date.getDay(); 返回值为一周中的哪一天,周日为0
-
日期对象中的时间
-
date.getHours() 返回小时
-
date.getMinutes() 返回分钟
-
date.getSeconds() 返回秒钟
-
date.getMilliseconds() 返回毫秒
-
date.getTime() 返回与1970年1月1日0时0分0秒间隔的毫秒数
-
date.getTimezoneOffset() 返回日期对象中本地时间与UTC之间的时差数,单位为秒
以上都为本地时间,如果是UTC时间,可以使用以下代码
date.getUTCHours();date.getUTCMinutes();date.getUTCSeconds();date.getUTCMilliseconds();
-
-
设置日期对象的日期
- date.setYear(year); 设置年份,该方法反对使用。
- date.setFullYear(year, month, day) 设置日期的年,月,日
- date.setMonth(month, day) 设置日期的月,日
- date.setDate(day); 设置日期的某一天,day为一月中的某一天
如果要采用UTC时间 date.setUTCFullYear(year, month, day); date.setUTCMonth(month, day); date.setUTCDate(day);
-
设置日期对象的时间
- date.setHours(hours, minutes, seconds, milliseconds)
- date.setMinutes(minutes,seconds, milliseconds)
- date.setSeconds(seconds, milliseconds)
- date.setMilliseconds(milliseconds) 如需采用UTC时间 date.setUTCHours(hours, minutes, seconds)
-
与毫秒相关的方法
- date.setTime(milliseconds)
- date.valueOf()
- Date.Parse(str)
- Date.UTC(year, month, day, hours, minutes, seconds, milliseconds)
-
创建数字对象
new Number(value)Number(value)如果省略new运算符,则把Number()当作一个转换函数来使用 -
数字对象的属性
- Number.Max_VALUE 最大值:1.79e+308(大概)
- Number.MIN_VALUE 最小值:5e-324 (大概)
- Number.NaN
- Number.POSITIVE_INFINITY 正无穷大
- Number.NEGATIVE_INFINITY 负无穷大
-
将数字对象转换成字符串
- number.toString(radix) radix是进制,假设2,则先将数字转换成二进制
- number.toLocaleString(); 转换为本地格式字符串
- number.toExponential(digits) 转换为科学计数法格式,digits取值0~20
- number.toFixed(digits) 正常计数格式,digits取值为小数点后几位
- number.toPrecision(precision) 返回字符串中的有效位数,如小于整数部分,则采用科学计数
为数学计算提供常量和计算函数
-
数学对象的属性
- Math.E 代表自然对数的底数(e), 值近似于2.718
- Math.LN10 代表10的自然对数(loge10),近似于2.3026
- Math.LN2 代表2的自然对数(loge2), 近似于0.6931
- Math.LOG10E 代表10为底e的对数(log10e),近似于0.4343
- Math.LOG2E 代表2为底e的对数(log2e), 近似于1.4427
- Math.PI 代表π, 近似于3.14159
- Math.SQRT1_2 代表2的平方根的倒数,近似于0.7071
- Math.SQRT2 代表2的平方根,近似于1.414
-
数学对象的方法 没有构造函数,不能使用new,都是静态方法,直接使用
- Math.abs(number) 返回number的绝对值
- Math.acos(number) 返回number的反余弦值,取值-1.0~1.0
- Math.asin(number) 返回反正弦值,取值-1.0~1.0
- Math.atan(number) 返回反正切值
- Math.atan2(y,x) 返回X轴到座标x,y的角度
- Math.ceil(number) 返回大于或等于number的最小整数
- Math.cos(number) 返回余弦值
- Math.exp(number) 返回e的number次幂
- Math.floor(number) 返回小于或等于number的最大整数
- Math.log(number) 返number的自然对数
- Math.max(number1, number2, number3…) 返回列表中的最大值
- Math.min(number1, number2, number3…) 返回列表中的最小值
- Math.pow(x, y) 返回x的y次幂
- Math.random()返回一个0.0~1.0的随机数
- Math.round(number) 返回number最近的整数
- Math.sin(number) 返回正弦值
- Math.sqrt(number) 返回平方根,必须大于或等于0,否则返回NaN
- Math.tan(number) 返回number的正切值
-
创建字符串对象 new String(str); String(str);
-
字符串的长度
-
查找字符串
- string.charAt(index) 返回字符串中的第index个字符,0~string.length-1
- string.charCodeAt(index) 返回字符串中的index个字符的Unicode代码
- string.indexOf(substring, startindex) 返回子字符串substring在字符串中的第一次出现的位置。其中substring参数为要在字符串中查找的子字符串,startindex为可选参数,该参数用于指定查找字符串的位置,取值0~string.length-1。如果没有指定startindex参数,则从字符串的第一个字符开始查找,相当于startindex值为0.如果字符串中包含子字符,则返回子字符串第一次出现在字符串中的位置,否则返回-1。
- string.lastIndexOf(substring, startindex) 和string.indexOf()相当,只是从最后开始查找
- string.match(regexp) 找到一个或多个正则表达式的匹配。
- string.replace(regexp, replacetext) 替换一个正则表达式匹配的字串
- string.search(regexp) 查找子字符在字符串中的个数
- string.slice(startindex, endindex) 返回一个子字符串,参数为开始位置和结束位置
- string.substr(startindex, length) 返回一个字符串
- string.substring(startindex, endindex) 返回一个字符串
以上方法都不会改变原字符的内容,只会返回一个新字符串
indexOf()与search()都可以返回子字符串在字符串中第一次出现的位置,但是indexOf()只是用于子字符串,search()还可以用于正则表达式
slice(startindex, endindex)和substring(startindex,endindex)都返回从startindex到endindex的字符串,包含startindex, 不包含endindex
slice()比substring()方法灵活,可以使用负数,substring()不可以使用负数
-
转换大小写
- string.toLocaleLowerCase()
- string.toLowerCase()
- string.toLocaleUpperCase()
- string.toUpperCase()
-
创建新的字符串
String.fromCharCode(value1, value2,…)string.concat(value1, value2…)第一个方法是静态方法,由构造函数String()创建,而不是由字符串或字符串对象创建。value参数列表可以是0个或多个整数,这些整数代表了字符串中的字符Unicode编码
第二个方法可以用来链接字符串,其中参数列表中为1个或多个字符串,该方法与使用
+运算符类似 -
其他方法
string.localeCompare(str)用本地特定的顺序来比较两个字符串。 `string.split(regexp, limit)将字符串分割为字符串数组, regexp参数用来指定用什么方式分割字符串,该参数可以是正则表达式,可以是字符串。limit参数可选,用于指定返回的数组的最大长度。`string.toString()返回字符串对象中的字符串值string.valueOf()返回字符串对象中的字符串值 -
非标准化方法
- string.anchor(str): 相当于返回
<a name=str>string</a> - string.big(): 相当于返回
<big>string</big> - string.blink(): 相当于返回
<blink>string</blink> - string.bold(): 相当于返回
<b>string</b> - string.fixed():
<tt>string</tt> - string.fontcolor(str):
<font color=str>string</font> - string.fongsize(str):
<font size=str>string</font> - string.italics():
<i>string</i> - string.link(url):
<a href=str>string</a> - string.small():
<small>string</small> - string.strike():
<strike>string</strike> - string.sub():
<sub>string</sub> - string.sup():
<sup>string</sup>
- string.anchor(str): 相当于返回
JS函数既是一种基本的数据类型也是一个对象,因此函数拥有属于自己的属性与方法。 函数对象的属性:
- function.arguments 为当前执行的函数返回一个Arguments对象
- function.caller 调用当前函数的函数
- function.length 函数定义的参数个数
- function.prototype 引用原型对象 函数对象的方法:
- function.apply(name, args) 将函数作为一个对象的方法调用。name为对象名,args为参数数组
- function.call(name,value1,value2…) 将函数作为一个对象的方法调用哦哦那个。其中name为对象名,value等为参数
- function.toString() 返回函数的字符串表示
JS代码出错时,JS的解释器就会抛出一个Error对象的实例
- 接收抛出的Error对象实例 catch(ex){}
- 创建Error对象
- new Error()
- new Error(message)
- Error对象的属性
- error.name 该属性为错误类型
- error.message 该属性为错误信息
- Error对象的方法
error.toString()
本章介绍了:
- Object对象
- Arguments对象
- 布尔对象
- 日期对象
- 数字对象
- 数学对象
- 字符串对象
- 函数对象
- Error对象
其他还有很多内置对象:
- 数组对象
- RegExp对象
- Window对象
- Navigator对象
- Screen对象
- Location对象
- History对象
- Document对象
- Form对象
数组是一些数据集合,数组的数据都又一个编号,通过编号可以引用这些数据
JS是无类型语言,所以数组内的每个元素类型可以是不相同的。数组中的元素类型可以是数字型,字符串型和布尔型,甚至也可以是一个数组
数组是数组元素(Element)的集合
JS不支持多维数组,但是JS中数组元素可以是任何类型的数据,包括数组
arr[1][2]
new Array()
new Array(size)
new Array(element1, element2...)
size: 数组元素的个数 element1, element2… 数组元素值的列表
数组元素的个数是由数组的最大下标所决定的
数组元素一旦被定义不能被删除,只能删除其值
array.length
join();
join(str);
push(value, ...)
返回值是添加元素后的长度
concat()也是在数组后添加元素,但是会生成一个新数组 concat(value1...)
unshift(value...)
splice(start, count, value,...)
start: 要删除,替换或插入数组元素的开始位置 count: 要删除,替换的数组元素的个数,可选 value: 要插入数组的值, splice()返回值是一个数组
slice(start, end)
slice()方法返回值也为一个数组,为原数组的一部分
将数组元素颠倒, 会改变原数组的顺序
sort()
sort(order)
会影响原数组的数据
toString() 和 toLocaleString()
JS中对象很多,这些并不是独立存在的,而是有层次结构的,对象可以依据层次来进行调用
对象模型是用来描述对象逻辑结构及其标准操作方法的一个接口(API)。
- JS语言核心部分:主要包括JS的数据类型,运算符和表达式
- 与数据类型相关的核心对象,主要包括一些与数据类型相关的内置对象,如布尔对象,日期对象,数学对象,数字对象和字符串对象
- 与浏览相关的对象: 主要包括window对象,Navigator对象和Location对象等
- 与文档相关的对象: 主要包括Document对象,Form对象和Image对象
js中window对象表示一个浏览器窗口。 JS中window对象层级高于Document对象 window.document.write("some thing")
如果要引用一些表单
window.document.forms1
表单中还有一些表单元素,用到elements数组
window.document.forms[0].elements[0]
表单元素中也会存在一些属性,例如value属性
window.docuemnt.forms[0].elements[0].value
简称BOM(Brower Object Model),该对象模型提供了独立语内容的,与浏览器窗口进行交互的对象。
Window对象是所有对象的顶级对象,所有对象都是该对象的子对象
Document对象又称为文档对象模型DOM(Document Object Model)
通过事件来调用程序的方式称为事件驱动
只要在对象的代码中添加一个属性即可 exonclick="clickButton
静态脚本不能够响应用户的事件,动态脚本定了事件处理程序的脚本,某个事件发生时,浏览器会自动调用事先定义好的事件处理程序。
有的时候可以将响应的代码直接写在事件中
<input type=“button” onclick=“alert(“您单击了按钮”)>
设置对象事件的方法有两种,分别为直接在HTML元素的属性中设置和在JS代码中设置
- HTML元素中设置对象事件
<input type="button" onclick="btClick()"> - JS代码中设置对象事件
<script type="text/javascript">
function btClick () {
alert("你点击了一个按钮");
}
window.document.forms[0].elements[0].onclick = btClick;
</script>
JS代码中设置对象事件,不需要输入函数名后的括号,因为
()是调用运算符,这回调用了函数中的代码 还可以直接将function语句赋值给元素属性
事件并不一定是用户激发,也可以代码直接激发,达到显式调用事件处理程序的目的。
this运算符代表的是函数内的对象本身
不同的对象产生的事件可能也有所不同
事件是浏览器产生,而不是JS本身产生,所以不同浏览器,事件也有可能不同。
鼠标移动事件包括鼠标一定(Mousemove), 鼠标离开对象(Mouseout), 鼠标移动到对象上(Mouseover)三种
- click
- dblclick
- mousedown
- mouseup
mousedown和mouseup右键也可以触发
- load
- unload
- focus 得到焦点
- blur 失去焦点 HTML4中规定A, AREA, LABEL, INPUT, SELECT, TEXTAREA, BUTTON元素拥有onfocus属性和onblur属性
- keydown 按下键盘
- keyup 释放键盘
- keypress 按下并释放键盘
- submit
- reset
- select 文本框中的文字被选择产生的事件
- change 文本框或下拉框中激活
window对象是一个全局对象,是所有对象的顶级对象。
Window对象可以控制窗口,可以控制窗口内容,可以控制框架之间的关系
window.属性名
window.方法名(参数列表)
Window对象,Document, Location, History, Screen对象等都属于客户端对象,这些对象不需要实例化,既不需要new运算符来创建的对象。只需要引用就可以了。
window.alert("String");
window.document.write("String");
现实使用重,JS允许字符串来给窗口命名。也可以使用关键字来代替某些特定窗口: self代替当前窗口, parent代替父级窗口
parent.属性名
- blur: 当窗口失去焦点时激发
- error: 执行JS代码产生错误时
- focus 窗口得到焦点时
- load 窗口文档完全加载时
- resize 调整窗口大小时
- unload 卸载网页时激发
包括:
- blur
- error
- focus
- load
- move
- resize
- unload
load可以用于BODY或IMG元素中,BODY中只有加载完毕会激发
浏览器不同,加载顺序不一样
unload
- blur
- focus
resize
error 可以传递以下三个参数给错误处理函数
- 详细的错误信息
- 产生错误网页的URL
- 产生错误的行数 这三个返回值是按顺序的
三种方式创造对话框
- 警告框
- 确认框
- 提示框
window.alert(message)
alert()中支持正则表达式,不支持HTMl代码
window.confirm(message)
confirm()方法还可以产生一个布尔类的返回值
window.prompt(message, defaulfText);
prompt()有可以输入文字的输入框 prompt()可以返回字符串类型的返回值
window中的defaultStatus属性和status属性可以控制状态栏中的信息
通常展示的信息有两种:
- 加载的文件和进度
- 超链接的URL
defaultStatus
hover的时候的URL信息就是瞬间信息,使用status属性
open()
-
open()方法的语法 window.open(url, windowName, features, replace)
- url 可选,空字符或null时,会新开空白窗口
- windowName: 可选,新开窗口的名称
- features: 字符串,描述新窗口的特征,可选
- replace: 布尔值,只有windowName参数值为一个已经存在的窗口名称时才起作用,true则用url参数值来替代该窗口浏览历史的当前项,false,则该窗口浏览历史中创建一个新项
建议完整输入
window.open(),防止和document的open()方法混淆 -
新开一个空白窗口 window.open()
-
新开一个有文档的窗口 url不为空就可以
-
新开一个命名窗口 指定windowName()参数值
-
设置新开窗口的特征 feature = value
-
设置浏览历史
window.close()
- 关闭自身窗口
- 关闭JS代码创建的自身窗口
- 关闭其他窗口
- 判断窗口是否关闭
- 新窗口中输入文字
- 操作新打开窗口中的数据
- 父级窗口的引用 window.opener 2, 3 调试不成功
-
获得焦点 window.focus() window对象名.focus()
-
失去焦点 window.blur() window对象名.focus()
- window.scroll(x, y) 该方法可以将窗口中显示的文档滚动到指定的绝对位置
- window.scrollTo(x, y) 建议使用scrollTo(),由1.2版本规定
- window.scrollBy(x, y) 该方法可以将文档滚动到指定的相对位置上
- window.moveTo(x, y)
- window.moveBy(x, y)
- window.resizeTo(x, y)
- window.resizeBy(x, y)
使用setTimeout()方法可以延迟代码的执行时间
window.setTimeout(code, delay)
- code:延迟执行的JS代码
- delay: 延迟事件,单位毫秒
要反复执行代码,要使用setInterval()方法
window.setInterval(code, interval);
window.setInterval(function, interval, parameters);
- code: 要周期执行的代码
- interval: 执行代码的周期事件,单位毫秒
- function: 周期执行的函数
- parameters: function函数的参数列表
window.clearInterval(id)
clearInterval()根据该返回值id来决定停止哪个setInterval()方法
window.clearTimeout(id)
JS中并不存在Frame对象,所谓的Frame对象只是Window对象的一个实例。该对象拥有Window对象的所有方法和属性及事件。
Window对象有一个frames属性,该属性是个数组,数组中的元素代表框架中包含的窗口。
-
框架关系中常用到的属性
- self 代表当前窗口
- parent 代表当前窗口的父级窗口
- top 代表当前窗口的顶级窗口
-
一个复杂的框架
-
框架自身的引用 以下三句的作用相同 self.document.write() window.document.write() document.write()
-
父窗口对子窗口的引用
-
子窗口对父窗口及其他窗口的引用
-
对顶级窗口的引用
包括Document, History, Location, Math, Navigator对象和Screen对象等
HTML文档
窗口的浏览历史
当前文档的URL
显示器信息
- navigate(url)
- print()
- event
- clientInformation
Screen对象是一个JS自动创建的对象,描述客户端显示器的信息。是一个全局对象,只读。
- height
- width
- colorDepth
- availHeight
- availWidth
Navigator对象也叫浏览器对象,包含了浏览器的整体信息。
Navigator对象的属性
- appName 浏览器名称
- appVersion 浏览器版本号
- userAgent 浏览器用于HTTP请求的用户代理头的值
- appCodeName 浏览器的代码名
- platform 运行浏览器的操作系统或硬件平台 IE支持的Navigator对象属性
- cookieEnabled 检查浏览器是否支持cookie
- systemLanguage 系统哦那个默认语言
- userLanguage 返回用户使用的语言 Netscape支持的Navigator对象属性
- cookieEnabled
- language 返回浏览器中使用的默认语言
- mimeType 返回一个数组,数组中的元素代表浏览器支持的MIME类型
- plugins 返回一个数组,数组的元素代表浏览器已经安装的插件
在Netscape中,NuneType和Plugin是Navigator对象的子对象。
- MimeType对象
- description 返回MimeType对象的描述
- enabledPlugin 该属性返回一个数组,数组中的元素为Plugin对象。该数组用于说明有那些插件支持该数据格式,如果没有插件支持则返回null
- suffixes 该属性返回MIME类型文件的扩展名
- type 该属性返回MIME类型的名称,该名称是唯一可以哟哦拿过来描述当前MIME类型的字符串
- Plugin对象
- description 插件的说明
- filename 插件程序的文件名
- length 插件所支持的MIME数据格式的个数
- name 插件的名称
MimeType对象的enbledPlugin属性返回的就是Plugin对象,而Plugin数组中的元素就是MimeType对象
只有一个判断是否启用了JAVA的方法 navigator.javaEnabled
除此之外,Netscape浏览器还支持一个启用新安装插件的方法: navigator.plugins.refresh(load) load参数为布尔值,
History对象的属性只有一个,用于查看客户端浏览器窗口的历史列表中访问过的网页个数: history.length
- back()
- forward()
- go() 该方法可以直接跳转到某一个已经访问过的URL。包含两个参数,一种参数是要访问的URL在历史列表中的相对位置,另一种参数为要访问的URL的字串
history.go()可以让当前页刷新一次
URL(Uniform Resource Locators) “统一资源定位器” URL可以由协议,域名或IP,端口,虚拟路径,文件名,参数以及锚7个部分组成
- 协议与域名
常用协议
- HTTP 超文本协议 http://
- FTP 文件传输协议 ftp://
- mailto 发送电子邮件 mailto:
- new 新闻组 news://
- gopher 信息查访 gopher://
- file 本地文件 file://
- JavaScript JS程序代码 javascript:alert(“”);
- view-source 查看网页源代码,该协议IE浏览器和Opera浏览器已经不再支持,但是Netscape浏览器和Firefox还支持 view-source:file://
- 端口 HTTP协议默认端口为80, FTP为21
- 文件名
- 虚拟目录
- 锚
- 参数
参数名和文件名是用
?号隔开,多个参数之间用&隔开,锚放在参数后
- protocol 返回当前文档URL的协议部分,包括其他的冒号
- hostName 返回当前文档URL的域名部分
- port 返回当前文档URL的端口部分
- host 返回当前文档的URL的域名部分和端口部分
- pathname 返回当前文档URL的虚拟目录和文件名部分
- hash 返回当前文档URL的锚部分
- search 返回当前文档URL的参数部分,包括”?”
- href 返回当前文档的完整的URL
- reload() 刷新文档
- replace() 用一个新的URL来取代当前的URL
Document对象:
- Anchor对象
- Applet对象
- cookie对象
- Embed对象
- Form对象
- Image对象
- Link对象
- Location对象
- Plugin对象
- alinkColor 用于设置或返回呗激活的超链接的颜色
- anchors 返回一个数组,数组中的元素为Anchor对象,用来代表当前文档中的锚
- applets 返回一个数组,元素为applet对象,代表当前文档中的java小程序
- bgColor 用于设置或返回当前文档的背景颜色
- cookie 读写Cookie
- domain 指定当前文档所属的Internet域,并且可以使处在同一个Internet域中的相互信任的Web服务器在网页之间交互时降低某项安全性的限制
- embeds 返回一个数组,元素代表一个由enbed元素插入到HTML文档中的数据。通常是插件或ActiveX控件
- fgColor 该属性用于设置或返回当前文档的文本默认的颜色
- forms 返回一个数组,数组中的元素为Form对象,代表当前文档中的表单
- images 返回一个数组,元素为Image对象,代表当前文档中的图像
- lastModified 返回当前文档的最后一次修改时间
- linkColor 设置或返回当前文档中未被访问过的超链接的颜色
- links 返回一个数组,数组中的元素为Link对象,代表当前文档中的超链接
- location 返回一个Location对象,与window对象中的location对象相同,反对使用
- plugins 与embeds属性相同,推荐使用embeds属性
- referrer 返回链接到当前文档的HTML文档的URL
- title 用来设置或返回当前文档的标题
- URL 该属性可以返回当前文档的URL
- vlinkColor 设置或返回当前文档中已经访问过的链接颜色
- clear() 擦去文档的内容,不过该方法反对使用
- close() 关闭一个文档的输出流,并现实文档流中的内容
- open() 该方法可以打开一个新文档
- write() 在文档中添加数据
- writeln() 与write()相同,只是在之后添加了一个换行
- 每个form元素都会创建一个Form对象,可以通过
forms[]数组中的元素访问这些Form对象 - a元素会在
links[]数组中创建一个元素 - 每个命名锚都会在
anchors[]数组中创建一个元素 - 每个img元素都会在
images[]数组中创建一个元素 - 每个applet元素都会在
applets[]数组中创建一个元素 - 每个embed元素都会在
embeds[]数组和plugins[]中创建一个元素,建议使用embeds[]数组
bgColor和fgColor属性来修改
Document对象中的lastModified,title和URL属性可以显示文档的信息。在HTML文件的最下方输出这些信息
Document对象的title属性与Window对象的setInterval()方法相结合,可以在浏览器窗口中现实动态标题。
使用Document对象的URL属性和referrer属性就可以防止盗链行为
- 简单的输出文字
- 将多个字符串链接后输出
- write()和writeln()之间的区别
- write()和writeln()的注意事项 只有在当前文档内才可以使用,否则会清除当前窗口内容
在一个已经存在的文档中,使用open()方法和write()方法一样,都会清除文档内容
如果不使用close()来关闭文档流,则可能:
- 浏览器将文档流存放在换村里,因此在浏览器窗口中不会现实缓存中的内容
- 文档流一直打开这,浏览器有可能不现实其他动态内容
document.open(mimeType)
mimeType是可选参数,字符串,用于指定打开文档的MIME类型 如果要打开HTML文档意外的文件,必须生命mimeType参数
all属性,返回一个数组,数组中的元素为HTML文档中的所有HTML元素
document.all[i]
document.all[name]
document.all[tagName]
images属性的返回值是一个数组,数组中的每一个元素都是一个Image对象
document.images[i]
document.images[iamgeName]
document.imageName
JS中可以使用构造函数来创建一个图片对象: new Image(width, height)
- border 边框的宽度
- complete 返回布尔值,说明图片是否加载完毕
- height 返回整数,高度
- hspace 返回或设置替代图片的第质量图片的URL。该属性的初始值由img元素的lowsrc属性值决定
- name 图片的名称
- src 返回或这是图片的URL
- vspace 返回一个整数,说明图片与文字在垂直方向的距离
- width 返回整数,宽度
Image对象没有可以使用的方法,但是支持abort, error等事件
- abort 当用户放弃加载图片时激发的事件
- click 图片上单击鼠标时激发
- dblclick 双击激发
- error 产生错误激发
- load 成功加载激发
- keydown 按下键盘激发
- keypress 按下并释放键盘激发
- keyup 释放键盘激发
- mousedown 按下鼠标未释放激发
- mouseup 释放鼠标激发
- mouseover hover激发
- mousemove 移动鼠标激发
- mouseout 移开鼠标激发
src属性可读写
- hash 返回或设置link的锚部分
- host 返回或设置对象的域名部分和端口部分
- hostname 返回或设置link的域名部分
- href 返回或设置对象的完整URL部分
- pathname 返回或设置link的路径部分,包括目录和文件名
- port 返回或设置link的端口部分
- protocol 返回或设置link的协议部分
- search 返回或设置link的查询部分,包括分隔符”?”
- target 返回或设置打开的目标窗口
- text 现实link对象中的超链接文字,Netscape属性
- innerText 与text属性相当,IE属性
link对象支持的事件与Image对象大致相同
anchors属性可以返回一个数组,每一个元素都是一个Anchors对象(锚对象)。
- name 返回锚命名
- text Netscape浏览器属性
- innerText IE属性
- acceptCharset 返回或设置接受的输入数据所用的字符编码方式列表,该属性的初始值由form元素中的acceptCharset属性值决定。
- action 返回或设置表单提交的URL,初始值由form元素中的action属性值决定
- elements 返回由Form对象中的元素所构成的数组,数组中的元素也是对象,有可能是Button, Checkbox,Hidden, Password, Radio, Reset, Select, Submit, text, Texture
- encoding 返回或设置提交表单时传输数据的编码方式,初始值enctype属性值决定
- id 返回或设置表单的id
- length 返回From对象中元素的个数
- method 返回或设置提交表单的方式
- name 返回或设置表单的名称
- target 返回或设置将表单提交到指定浏览器窗口或框架中
- reset()
- submit()
- reset
- submit
利用对象的属性,方法和事件可以实现很多动态效果
表单元素:
- 单行文本框 <input type=“text”>
- 多行文本框 <textarea></textarea>
- 密码框 <input type=“password”>
- 单选按钮 <input type=“radio”>
- 复选框 <input type=“checkbox”>
- 下拉列表框
- 文件选择框 <input type=“file”>
- 普通按钮 <input type=“button”>
- 提交按钮 <input type=“submit”>
- 重置按钮 <input type=“reset”>
- 分组元素 <fieldset></fieldset>
input:
- type 类型
- name 文本框名称
- value 初始值
- size 宽度
- maxlength 文字最大数 textarea:
- rows 高度
- cols 宽度
- text 初始值
- accessKey 返回或设置访问文本框的快捷键
- defaultValue 返回或设置文本框中的初始文本
- disabled 返回或设置文本框是否被禁用 true or false
- form 返回包含文本框元素的Form对象的引用
- id 返回或设置文本框的ID属性值
- maxLength 返回或设置文本框可输入文字的最大数
- name 返回文本框的名称
- readOnly 返回或设置文本框是否只读
- size 返回或设置单行文本框的大小
- tabIndex 返回或设置文本而况的tab顺序索引
- type 返回文本框类型
- value 返回或设置文本框中的文本
- rows 多行文本框的高度
- cols 多行文本框的宽度
- blur() 移开焦点
- click() 模拟单击
- blur 焦点移开时激发
- change 内容改变并失去焦点激发
- click 单击文本框时激发
- dblclick 双击文本框时激发
- focus 获得焦点时激发
- keydown 按下键盘激发
- keypress 按下并释放键盘激发
- keyup 释放键盘激发
- mousedown 按下未释放鼠标激发
- mouseup 释放鼠标激发
- mouseover 移动到其上时激发
- mousemove 在其上移动鼠标时激发
- mouseout 文本框上移开时激发
- select 文本框的文字被选中失去焦点时激发
- selectstart 文字开始呗选中时激发
- 输入文字时判断输入字数
- 提交数据时候判断输入字数
- 失去焦点时候判断输入字数
- 鼠标经过文本框时选择文字 select()方法与mouseover事件结合
- 鼠标经过的时候清除文本
myText.value = “”; - 进一步完善
不清除用户输入的文字
检查内容是否与初始值相同:
textbox.value == textbox.defaultValueonfocus="clearText(this)"
- 使用button元素创建按钮
- 使用input元素创建按钮
- accessKey 返回或设置快捷键
- defaultValue 返回或设置初始文字
- disabled 返回或设置是否被禁用
- form 返回包含按钮元素的Form对象的引用
- id 返回或设置ID
- name 返回按钮名称
- tabIndex 返回或设置按钮的tab顺序索引
- type 返回按钮的类型
- value 返回或设置显示在按钮上的文字
- blur() 移开焦点
- click() 模拟鼠标点击
- focus() 该方法可以将焦点赋给按钮
- blur 移开按钮激发
- click 单击激发
- dblclick 双击激发
- focus 获得焦点激发
- keydown 按下键盘激发
- keypress 按下并释放键盘激发
- keyup 释放键盘激发
- mousedown 按下并释放鼠标激发
- mouseup 释放鼠标激发
- mouseover 鼠标移动到激发
- mousemove 在其上移动激发
- mouseout 移开激发
用checked设置默认选项
- length 返回下拉框选项个数
- multiple 返回或设置下拉框是否允许多选
- option 返回一个数组,数组中的元素为选项
- remove(i) 删除下拉列表框的选项,其中i为数组下标
创建下拉列表框中的选项,可以使用以下构造函数:
new Option(text, value, defalutSelected, selected)
multiple属性
可以将选项值设置为要跳转的URL,通过select对象的value属性值得到该跳转URL,在通过Location对象的href属性跳转页面。
利用下拉列表框的菜单,多行显示,以及随意添加,删除选项的特点。
- 上传文件的编码与传输方式与普通的文本不同,因此必须要在form元素中设置enctype属性与method属性,enctype必须为”mulitipart/form-data”, method属性值必须为”post“
- value属性值只能由哟哦你过户选择或输入,不能在JS程序中输入
- 不存在defaultValue属性
- 不会存在maxlength属性
是不在浏览器显示的,多数是向服务器上传一些不希望用户看到的数据
使用Fieldset元素为表单中的元素进行分组,所有在<fieldset>...</fieldset>之间的表单元素可以划分为一组
fieldset元素也是Form对象的elements[]数组中的一员
就是一些信息,以文件的形式存储在客户端计算机上。
cookie的主要作用是保存信息,并与服务器互动。 常用到cookie的场景
- 用户登录
- 电子商务
- 定制用户页面
- 手机用户喜好
创建: document.cookie = “name=value”
读取: document.cookie
cookie文件存放的就是一个字符串,获取指定的cookie,还需要使用String对象中的方法才能获得需要的cookie值
cookie都是未编码的格式存入,要将特殊符号写入cookie中,就必须在写入cookie之前,使用escape()函数将cookie值进行编码,在读取cookie时候再通过unescape()函数还原
document.cookie = “name=value; expires=date”
date必须是GMT格式的日期型字符串,格式如下:
wdy, DD-Mon-YY HH:MM:SS GMT
- wdy: 英文表示星期数
- DD: 两位数表示的日期数
- Mon: 用3个字符表示月份
- YY: 用两位数表示的年份
- HH: 用两位数表示的小时数
- MM: 用两位数表示的分钟数
- SS: 用两位数表示的秒数
- GMT: 用于说明该格式是GMT格式
ex:
Sat, 15 Sep 2015 06:27:12 GMT
由于GMT格式使用起来很不方便,因此,可以先定义一个Date对象,再通过toGMTString()方法,来得到GMT格式的日期型字符串。
此部分代码比较晦涩,需要请教其他人或再行研究, 代码 14.5.html
cookie默认只能被同路径或子路径页面读取,如果要网站其他目录的文件也能读取,需要使用path设置cookie的路径 设置path方法与设置expires的方法类似,使用分号与其他参数分割开来就可以了
解决同域下不同网址访问问题,需要设置cookie的domain,和设置path方法类似 `";domain=.hivan.me" `
设置了cookie的secure,那么只能被HTTPS协议或其他安全协议传输,secure是一个布尔值
- cookie并不是十分安全
- cookie存放的数据最多不能超过4kb
- cookie文件最多存储300个cookie
- 每个服务器(www.hivan.me和blog.hivan.me算两个服务器)最多不能超过20个cookie文件
- cookie的生存期是以毫秒为单位计算的
- 客户端浏览器可以设置拒绝cookie
Ajax(Asynchronous JavaScript And XML)是异步JS和XML技术的缩写
优点表现:
- 只提交有用的数据,而不是整个网页的所有数据,因此可以减少数据的冗余程度,也可以减轻网络贷款的压力和服务器的负担
- 可以局部更新,浏览器不会显示空白
- 相应速度快
- 将计算转嫁到客户端,减轻服务器负担
- 获得其他网页内容填充到自身网页 缺点表现:
- 需要Ajax引擎,不同浏览器Ajax有所不同
- 后退功能无效
- 不被搜索引擎支持
- 很多智能终端不能很好的支持Ajax
Ajax包括HTML,XHTML,CSS,DOM,XML,XSTL和HTMLHttpRequest等技术 使用最多的是JavaScript,XMLHttpRequest, CSS, DOM和XML
Ajax中,使用最多的是JS来检验表单数据的有效性,或通过JS来操作XMLHttpRequest以达到与WEB服务器或数据库交互的目的。
XMLHttpRequest是XMLHTTP组件的一个对象,也是Ajax处理的核心。 IE中使用的是XMLHTTP组件的XMLHttpRequest对象,而Netscape是直接使用XMLHttpRequest组件,创建异步调用对象的语句有少许差别
Ajax中,DOM的作用主要是刷新局部数据
XML是以简历和管理数据为目标 Ajax中,XML主要是存储数据和文档,并让其他程序共享。
- abort() 停止当前的请求
- getAllResponseHeaders() 获取相应的所有HTTP头
- getResponseHeader(header) 从相应的信息中获取指定的HTTP头 header: 要获取的HTTP头的名称,如Content-Type
- open(method,URL,flag,name,pwd) 创建一个新的HTTP请求,并指定该HTTP请求的方法,URL及验证信息
- method: HTTP请求方法,一共有get,post
- head、put、delete五种方法,常用的方法为get和post
- URL HTTP请求的URL地址,可以是绝对或相对
- flag 可选的布尔型参数,用于指定是否使用异步方式,true表示异步方式,false表示同步方式,默认为true
- name 可选参数,服务器需要验证,可以输入用户名
- pwd 可选参数,需要验证,可以输入密码
- send(data) 将请求发送给Web服务器 data 可选参数,发送请求的数据
- setRequestHeader(name, value) 单独指定请求的HTTP头
- name: HTTP头名称
- value HTTP头的值
具体地址 属性
- readyState
HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。
5 个状态中每一个都有一个相关联的非正式的名称,下表列出了状态、名称和含义:
0. Uninitialized
初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。
- Open open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。
- Sent Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。
- Receiving 所有响应头部都已经接收到。响应体开始接收但未完成。
- Loaded HTTP 响应已经完全接收。 readyState 的值不会递减,除非当一个请求在处理过程中的时候调用了 abort() 或 open() 方法。每次这个属性的值增加的时候,都会触发 onreadystatechange 事件句柄。
- responseText 目前为止为服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。 如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性保存了完整的响应体。 如果响应包含了为响应体指定字符编码的头部,就使用该编码。否则,假定使用 Unicode UTF-8。
- responseXML 对请求的响应,解析为 XML 并作为 Document 对象返回。
- status 由服务器返回的 HTTP 状态代码,如 200 表示成功,而 404 表示 "Not Found" 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常。
- statusText 这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。也就是说,当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。
常用HTTP状态 状态码地址
XMLHttpRequest对象可以响应readystatechange事件,该事件是在XMLHttpRequest对象的readyState属性值产生变化时所要激发的。
实现异步调用需要XMLHttpRequest对象,要局部刷新需要使用到JavaScript和DOM。
- 创建XMLHttpRequest对象
- 创建一个新的HTTP请求,并指定HTTP请求的方法,URL及验证信息
- 设置响应HTTP请求状态变化的函数
- 发送HTTP请求
- 获取异步调用返回的数据
- 使用JavaScript和DOM实现局部刷新
IE:
var xmlHttp = new ActivexObject("Microsoft.XMLHTTP);
Netscape:
var xmlHttp = new XMLHttpRequest()
可以使用XMLHttpRequest对象的open()方法
XMLHttpRequest.open(method,URL,flag,name,password)
- method: 用于指定HTTP的请求方法,共有get,post,head,put,delete五种方法,常用get和post
- URL 用于指定HTTP请求的URL地址
- flag 可选,为布尔型。指定是否使用异步,默认为true
- name 可选,输入用户名,如果服务器需要验证,则必须
- password 可选,输入密码,如果服务器需要验证,则必须
通常使用以下代码来访问一个网站文件的内容
xmlHttp.open("get", "http://www.aspxfans.com/BookSupport/JavaScript/ajax.xml", true);
或使用以下代码访问一个本地文件的内容
xmlHttp.open("get", "ajax.html", true)
创建HTTP请求之后,就可以将请求发送给Web服务器了。发送HTTP请求的目的是为了接收从服务器中返回的数据。从创建XMLHttpRequest对象开始,到发送数据,接收数据,XMLHttpRequest对象一共会经历以下5种状态
- 未初始化状态 创建完XMLHttpRequest对象时,该对象处于未初始化状态。此时XMLHttpRequest对象的readyState属性为0
- 初始化状态 在创建完XMLHttpRequest对象后,使用open()方法创建了HTTP请求时,该对象处于初始化状态。此时XMLHttpRequest对象的readyState属性值为1
- 发送数据状态 初始化XMLH对象之后,使用send()方法发送数据时,该对象处于发送给状态,此时XMLH对象的readyState属性值为2
- 接收数据状态 服务器处理完返回结果,此时处于接收状态,readyState属性值为3
- 完成状态 readyState属性值为4,此时接收完毕后数据存入客户端计算机的内存中,可以使用reponseText属性或reponseXML属性来获取数据
XMLttpRequest可以响应readystatechange事件,readyState属性值改变时激发。因此,可以通过该事件调用一个函数,并在该函数中判断XMLHttpRequest对象的readyState属性值,如果readyState为4则使用responseText属性或responseXML属性来获取数据
以上异步调用过程完毕,并不代表异步调用成功了,如果要判断异步调用是否成功,还要判断XMLHttpRequest对象的status属性值,只有该属性值为200,才表示异步调用成功,因此要获取服务器返回数据的语句,还必须要先判断XMLHttpRequest对象的status属性值是否等于200
注意,如果HTTP文件是本地运行而不是服务器上运行,xmlHttp.status返回值为0
XMLHttpRequest.send(data)
以下为data参数的一个实例
name=myName&value=myValue
只有send()方法之后,XMLHttpRequest对象的readyState属性值才会开始改变,也才会激发readystatechange事件,并调用函数
-
表单对象的数据更新 表单对象的数据更新,通常只要更改表单对象的value属性值,其语法代码如下所示。
FormObject.value="新数值" -
IE浏览器中标签间文本的更新 IE浏览器中使用inerText或innerHTML属性来更改标签间文本的内容。
-
DOM技术的局部刷新 DOM中,HTML每一对开始标签和结束标签都堪称是一个节点。 DOM中使用getElementById()方法可以通过id属性值来查找该标签,或者说节点
var node = document.getElementById("myDiv")注意: id节点是唯一的
需要再研究一遍实例
全面掌握Ajax,除了JS,还需要掌握以下技术
局部刷新不一定需要Ajax,例如之前的二级联动菜单,就是一个局部刷新的例子。
客户端脚本是Ajax的核心,异步存取是Ajax的灵魂
Iframe技术的好处
- 减少客户端代码,加载客户端文件比较块
- 根据需要显示指定的文件
element.style.attribute = value
- element HTML中的元素名,通常由ID属性值指定
- style 关键字,用于声明 元素的样式
- attribute 样式的属性,也就是指定什么样式
- value 样式的属性值