元素:HTML以标签开始,以结束,文档的所有内容都要方到两个标签内。包含, ,,标签之间,在文档加载或页面控制的事件触发时执行。
弱数据类型——在JavaScript中,定义变量时无须指定变量的类型,浏览器会根据变量的取值情况确定变量类型,变量的类型会随着 值的改变而改变。
跨平台——JavaScript与操作系统无关,有支持JavaScript的浏览器即可。
基于对象——JavaScript是一种基于对象的语言,提供内置对象,用户可以根据需要来创建对象,通过调用对象的方法和属性来实现页面的某些特效。JavaScript不是一门纯面向对象的语言,语法灵活。
基于事件驱动——事件驱动是指在页面中执行某种操作时所产生的动作。浏览器根据用户的操作进行响应,并执行相应的JavaScript脚本。
JavaScript规范
浏览器解析JavaScript脚本时,会忽略标识符与运算符之间的多余的空白字符;
每条语句单独占一行,并以英文分号结束。
代码要有缩进,以增加代码的层差感。
JavaScript使用形式
在页面中使用JavaScript的三种形式:行内JavaScript脚本,内部JavaScript脚本,外部JavaScript脚本。
行内JavaScript脚本: 点击图片触发JavaScript脚本。
内部JavaScript脚本:将JavaScript脚本提取出来统一放到标签中,称为内部的JavaScript脚本。
外部JavaScript脚本:将JavaScript与HTML代码彻底分离,类似于CSS文件,在
基本语法
标识符命名规则:
与Java的基本相同。不能与javaScript中的关键字相同。推崇使用小写形式与骆驼命名法(骆驼式命名法就是当变量名或函数名是由一个或多个单词连结在一起,而构成的唯一识别字时 ,第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母 )
关键字(Reserved Words):
关键字是指JavaScript中预定义的,有特变意义的标识符,
JavaScript关键字
abstract
arguments
boolean
break
case
catch
byte
char
calss
const
continue
debugger
default
delete
do
double
else
enum
eval
export
extends
false
final
finally
float
for
function
goto
if
implements
import
in
instanceof
int
interface
let
long
native
new
null
package
private
protented
public
return
short
static
super
switch
synchronized
this
throw
throws
transient
true
try
typeof
ver
void
volatile
while
with
yield
数据类型 :
在JavaScript中,变量的类型可以改变,但某一时刻的类型是确定的,常见的数据类型有String,Boolean,Array,Number,Undefinded等类型。
JavaScript常用类型
String
字符串是由有‘’||“”括起来的0~n个字符
Boolean
布尔类型包括true与false
Null
表名某个变量值为空
Undefined
当声明的变量为初始化时,默认值为undfined
Array
一系列变量或者函数的集合,可以存放类型相同或不同的数据的集合,JavaScript数组的length属性是可变的,
Number
JavaScript中数值类型可以是32位的整数,或64位的浮点数,整数可以是十/八/十六进制
Function
JavaScript函数是一种特殊的对象数据类型,可以被存储在变量,数组或对象
Obiect
通过属性和方法定义的软件对象:对象中的命名变量称为属性,对象中的函数称为方法,常见的对象string,Date,Math和Array等
变量的定义 :var 变量1[变量2……];在JavaScript中可以不用定义直接使用。
变量类型 :与Java不同JavaScript中的变量是弱数据类型,在声明变量时不需要指明变量的数据类型,类型由所赋值确定,动态改变,通过typeof运算符或typeof()函数可以获取当前数据类型,例:typeof X;typeof(X);
变量的作用域 :
全局变量 :未定义的变量直接赋值时,浏览器会将变量定义为全局变量。而未定义变量直接使用会报错。
局部变量 :与Java一样。
变量的赋值
注释与Java一样。
赋值,算数,逻辑,比较运算符,三元运算符与Java一样。比较运算符多(!==严格不等于(值类型不相同为真,反之),===严格等于(值,类型相同为真,反之))与==的区别:==支持自动类型转换,忽略数据类型转换。
算术运算符
流程控制:
分支结构,if条件语句与switch语句(default(default子句可以放到switch语句的开始位置和末尾),
循环结构:while循环,do……while循环,for循环,for in循环(for in循环是JavaScript提供的特殊的循环,可以对 字符串,数组,对象集合,对象属性等进行遍历 for(i in Object){}i表示索引)
转移语句 :btrak ,continue,return。
switch语句
支持三元运算法:
if条件语句
with语句:通过with语句简化,例:
break和continue的用法
函数:
一组延迟动作集的定义,可以通过事件触发或在其他脚本进行调用。在JavaScript中,通过函数对脚本有效的组织,使脚本更加结构化,模块化。
预定义函数
parseInt()
将字符串转换成整形,存在非法值时停止转换,都是非法值时返回NaN,小数点后截断
parseFloat()
将字符串转换为浮点型, 不是数字返回NaN
isNaN()
测试是否是一个数字。布尔型,是返回false,否则返回true
idFinite()
测试是否是一个无穷,如果是,返回一个false,布尔值
escape()
将字符串转换为Unicode码
unescape()
解码由escape函数编码的字符
eval()
计算表达式的结果,若是脚本,则执行相应脚本
alert()
显示一个提醒对话框,包括一个OK按钮
confirm()
显示一个确认对话框,包括OK(返回true)和Cancel(false)按钮
prompt()
显示一个输入对话框,提示等待用户输入
自定义函数 :在JavaScript为弱数据类型语言,自定义函数时不需要声明函数的参数类型返回类型,javaScript目前支持的自定义方式有命名函数,匿名函数,对象函数和自调用函数。
命名函数的定义 :函数由函数定义和函数调用两部分组成。在同一个标签中,JavaScript允许函数的调用在函数定义之前,不同的
匿名函数的定义 :前端经常使用,通过表达式来定义函数,定义格式与命名函数基本相同,没有函数名称,函数以分号结束,需要使用变量接受,方便后面函数调用;
语法:var 变量=function ([parameters]){statementes;[retunr expression];};
对象函数的定义 :JavaScript提供Function类,用于定义函数。
语法:var funcName =new Function([parameters]<参数为字符串时逗号隔开>,statements;<字符串格式,也是函数的执行体,语句以分号隔开>);
自调用函数 :函数本身不会自动执行,只有调用时才会被执行,定义与调用一并实现。将函数的定义用小括号括主,说明是一个函数表达式,函数表达式后面紧跟一对小括号,表示自动调用。
语法:(function ([parameters]<型参可选>){statementes; [return 表达式];})([params]<实参,调用时传入数据>);函数可以时候使用外部变量
JavaScript对象
JavaScript是一种基于对象的语言。对象是一种特殊的数据类型,有变量和函数共用构成,其中变量称为对象的属性,函数称为对象的方法,对象分为内置对象和自定义对象;
内置对象:
Array数组对象 :
使用单独的变量名存储有序的数据集合,可以将不同的数据类型的数据存放在一个数组中,创建数组对象,
new Array()//使用无参构造函数创建数组,返回一个空数组,数组长度为0 ;
new Array(size)//使用一个参数的构造函数时,返回一个长度为size的数组,数组中元素默认为undefined;new Array(多个参数)//使用参数指定的初值来初始化数组,长度为参数个数。
var 数组名 = [多个参数];//简写形式创建数组;
Array对象常用的方法
Array对象的属性包括constructor(返回创建对象的构造函数的引用(String/Array等)),length(数组长度),prototype(为对象添加属性方法)
数组对象的常用方法
concat()
连接两个或多个数组,返回合并后数组,原数组不变move.concat(asd);
reverse()
反转数组
join(“ ”)
返回数组中所有元素的连接字符串,用指定符号连接
slice()
从已有的数组中返回选定元素
push()
向数据末尾添加一个或多个元素,返回新长度
sort()
对数组元素排序
pop()
删除并返回数组中的最后一个元素,
splice()
向数组中添加或删除一个多个元素,返回删除元素.类似于元素的替换
shift()
删除并返回数组中的第一个元素
UNshift()
开头添加一个或多个元素,返回新长度
ArrayObject.concat(param1,param2,……paramX):
//至少一个参数,值或者数组对象,逗号隔开,返回合并数组,原数组不变,
ArrayObject.join(separator);
//参数separrtor为分隔符,默认逗号,返回字符串,separator将元素连接;
ArrayObject.push(newElement1,newElement2,……newElementX)
//至少一个参数,不创建新数组,返回新长度,
ArrayObject.slice(start,[end])
//start必须表示开始位置,end表示结束,默认结尾,允许负值,-1表示最后一个。
ArrayObject.sort([sortby]);
//参数为排序函数,可选,默认字符编码大小排序,没有返回值。
ArrayObject.splice(index,howmany,[item1,……item2])
//index(必须,删除元素开始位置,可负),howmany(必须,删除数量,0表不删除),当删除返回删除元素,item1(可选,添加或替换的新元素,没有返回值);
数组对象的用法
**************************
二维数组:没有二维和多维的概念,一维数组存放元素为一维数组实现,
创建二维数组:var as =new Array() as[0] =new Array(‘值’)……;||var as = [[],[],[]……];
二维数组的模拟
String字符串对象:
用于对文本字符串进行进行处理,设置文本的字体大小,字体颜色,上标和下标的操作。
字符串对象的创建:字面量类型(var name = " ")和new类型(var name=new String(""))
字符串类型 是一个基本的数据类型 ,字符串对象是将字符串封装成一个对象。变量.toString()//转换为字符串
使用字面量方式创建的字符串的类型为string,而通过new方式创建的返回String对象,仅使用构造方法没有new也是string。
可以使用typeof()函数或者typeof运算符查看字符串类型,String是构造函数,string为基本类型。string没有提供prototype原型对象,而String对象具有prototype原型对象,通过浏览器的端点试调可以查看。使用typeof()函数查看类型时,String返回function,String对象返回Object,string返回string。使用==比较时,string类型判断其中值是否相等,而String对象判断是否属于同一对象的引用。String对象一直有效,string在执行后销毁。
字符串对象的常用方法
anchor(name)
创建一个锚点元素(具有id或name特性而不是href特征的标签)
bold()
用于将字符串加粗
charAt(index)
返回指定位置的字符
fontcolor(color)
用于指定字符 串的字体颜色
fontsize(size)
用于指定字符串的显示尺寸,size为1~7的数字
indexOf(searchValue,[fromIndex])
返回searchValue在字符串中首次出现的位置,没有返回-1
slice(start,[end])
抽取重start到end的所有字符,允许负数
lastindexOf(searchValue,[fromIndex])
重后向前返回searchValue在字符串中首次出现的位置
substring(start,[stop])
截取start到stop-1的符串,不接受负数,
subsrt(start,[length])
同上
split(separator,[howmany])
把字符串分割为字符数组,(separator为字符串或者正则表达式,howmany]指定返回长度
sub()
如果位于标签中,用于把字符串显示为下标,
sup()
如果位于标签中,用于把字符串显示为上标,
toLowerCase()
用于把字符串转换为小写
toUpperCase()
转换为大写
search(regExp)
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串
replace(regExp/subStr,replacement)
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
march(searchValue/ergExp)
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
String常用的方法
转义字符 与其他类似;
String字符串的截取
Data日期对象 :
Javascript通过日期对象来操作日期和时间,通过日期对象的构造函数创建一个系统当前时间或指定的日期对象。
使用无参构造函数创建日期对象,返回系统当前时间的日期对象: new Date();
new Date(millisenconds);参数表示毫秒数 new Date(month dd,yyyy hh:mm:ss);month表示英文月份
new Date(yyyy,MM,dd);年月日 new Date(yyyy,MM,dd,hh,:mm:ss);年月日时分秒
getDate()
返回一个月中的某一天
getDay()
返回一周中的某一天
getMonth()
返回月份
getFullYear()
返回4位数字的年份//getFullYear(year,month,day),第一个必须,剩下可选
getHours()
返回Date对象的小时
getMinutes()
返回Date对象的分钟
getSeconds()
返回Date对象的秒数
getTime()
返回初始时间和到现在的毫秒数
setDate()
设置Date对象中的日期
setMonth()
设置Date对象中的月份
setFullYear()
设置Date对象中的年份
setHours()
设置Date对象的小时//setHours(hour,min,sec,millsec),第一必选,其他可选。
setMinutes()
设置Date对象中的分钟
setSeconds()
设置Date对象中的秒数
setTime()
以毫秒设置Date的对象
Math
范围大部分从0开始,到实际日期-1;
日期对象的构造方法
日期对象的常用方法
Math数学对象:没有构造方法,可以直接使用;
Math常用属性
E
返回算数常量e,
IN2
返回2的自然对数,约2.718
LN10
返回10的自然对数,约2.302
LOG2E
返回以2为底的e的对数,约1.442
LOG10E
返回以10为底的e的对数,约0.434
PI
返回圆周率 约3.1415926
SORT2
返回2 的平方根 约1.414
SQRT1_2
返回2的平方根的倒数,约0.7071
数学对象的常用属性
Math的常用方法
Math的常用方法
ads(x)
绝对值
ceil(x)
向上取整
floor(x)
向下取整
round(x)
四舍五入
exp(x)
e的指数
log(x)
数字的自然对数
max(x)
最大值
min(x)
最小值
pow(x,y)
x的y次
sqrt(x)
平方根
random()
0~1随机数
(a)sin/cos/tan(x)
计算(反)正弦余弦正切
数学对象的常用方法
RregExp正则表达式对象
正则表达式是一种字符串匹配模式,通过单个字符串来描述和匹配一系列符合某个句法的规则。Javascript提供RegExp对象完成正则表达式的匹配功能。
RegExp对象(正则表达式)的创建:
直接量方法:var = /pattern/attributes;例:var reg = /^\d*$/;匹配数字,没有返回空
构造函数的方法:var regExp=new RegExp("pattern","attributes");例:var regExp = new RegExp("^\\d*$"); \需要转义。
pattern表示要匹配的字符串或表达式(可以包括元字符,括号表达式以及量词,可以混合使用),attributes表示操作属性,取值为g(全局匹配)、i(忽略大小写)、m(多行匹配,^匹配开头$匹配结尾) 。
常见的元字符,括号表达式,量词
元字符
描述
表达式
描述
量词
描述
.
单个字符,除了换行,行结束符
[abc]
括号内的任意字符
n+
任何含至少一的n的字符串
\w
下划线任何单词,等价于[A-Za-z0-9_]
[^abc]
除了括号内的任意字符
n*
任何含0个或多个n的字符串
\W
任何非单词字符,等价于[^A-Za-z0-9_]
[0-9]
0-9的任意数字
n?
任何含一个或0个n的字符串
\d
查找数字
[a-z]
a-z的任意字符
n{x}
含x个n的序列的字符串
\D
非数字字符
[A-Z]
A-Z的任意字符
n{x,y}
含x或y个n的序列的字符串
\s
空白字符
[A-z]
A-z的任意字符
n{x,}
含至少x个n的序列的字符串
\S
非空白字符
(boy|girl)
括号内的一项
n$
含任何结尾为n的字符串
\n
换行符
[a|b|c]
括号内的任意一个字符
^n
含任何开头为n的字符串
\r
回车符
? =n
其后紧跟字符串n的字符串
\xxx
八进制规格字符
?!n
没有紧跟字符串n的字符串
\xdd
十六进制规格字符
例;创建匹配电话号码的RegExp对象:
var srt = new RegExp("1[3|4|5|8][0-9]");\\手机 var srt = /^((\d{3}-d{8})|(\d{4}-\d{7}))$/; //电话
RegExp对象的方法
compile:编译正则表达式;编译后执行速度回提高,rgExp .compile(pattern , [flags ]);
exec():检索字符串中正则表达式的匹配情况。匹配成功返回内容和所在位置。var result = RegExpObject.exec(string);result表示匹配的字符串,result.index表示位置。
String字符串的截取
test():匹配成功返回true,否者返回false。
正则表达式对象的用法
String与RegExp:在String对象中有三种方法以RegExp对象为参数。
search(regExp)
检索与正则表达式相匹配的子字符串
replace(regExp/subStr,replacement)
替换一个与正则表达式匹配的子串
march(searchValue/ergExp)
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配信息
字符串中使用正则表达式
自定义对象:
在JavaScript中,用户可以自定义对象,定义的对象的方式有5种:(方法后要有;)
原始方式 ,:var 对象名 = new Object(); 对象名.属性名 = value; 对象名 .方法名 = functionname | function(){};事先的函数或匿名函数;
自定义对象-原始方式
构造函数函数方式 ,:function 对象名(构造参数1,……){this.属性名 = value;this.方法名 = functionname | function(){…}}
自定义对象-构造函数方式
原型方式 ,:object.prototype.属性名 = value;object.prototype.方法名 = functionname | function(){};为自定义和内置对象添加属性方法。
自定义对象-原型方式
混合方式 ,:构造函数和原型方法结合;
自定义对象-混合方式
JSON(JavaScript Object Notation)方式。:
是一种基于ECMAScript的轻量级数据交换格式,采用完全独立于语言的文本格式,以{}的形式出现,属性与属性值成对。
var 对象名 = {属性名:属性值,方法名:function(){}};
在数据传输过程中,JSON数据往往以字符串的形式进行传输,在页面中要通过JavaScript中eval()或Function对象的方式将字符串解析为JavaScript对象。var movie = eval("+JSON字符串+");alert(typeof(eval("({})"))); var movie = (new Function("","return","JSON字符串"));
自定义对象-JSON方式
BOM与DOM编程
BOM模型(Browser Object Model ,浏览器对象模型)
定义JavaScript操作浏览器的接口,提供与浏览器窗口交互的功能,用于描述浏览器中对象与对象之间的层次关系的模型,提供了独立以页面内容并能够与浏览器窗口进行交互的对象结构。
window
screen
history
loction
navigator
document
frames
link
form
div
..
..
window对象
是BOM 的顶层对象,其他对象都是该对象的子对象,浏览器会为每一个页面自动创建window,document,location,navigator和history对象;
window对象是BOM模型中的最高一层,通过window 对象的属性和方法来实现对浏览器窗口的操作,
window对象的属性
closed
只读,返回窗口是否已被关闭
defaultStatus
可返回或设置窗口状态栏中的缺省内容,定义浏览器状态栏默认显示的内容
inerWidth
只读,窗口的文档显示区的宽度(单位为像素)IE不支持,可用document.documentElement或doc.body的clientHeight属性替代
name
当前窗口的名称
opener
可返回对创建该窗口的window对象的引用,只有表示顶层窗口的window对象的opener属性有效,框架无效
parent
如果当前窗口有父窗口,表示当前窗口的父窗口对象
self
只读,对窗口自身的引用
top
当前窗口的最顶层窗口对象
status
可返回或设置窗口状态栏中显示的内容,临时给变状态栏内容
在JavaScript中window对象为全局对象,在使用窗口的属性和方法时,允许以全局变量或系统函数的方式使用哦,
window对象的常用方法
alert()
显示带有一段消息和一个确认按钮的对话框
prompt()
显示可提示用户输入的对话框
confirm()
显示带有一段消息以及确认按钮和取消按钮的对话框
close()
关闭浏览器窗口
open(url,name,features,replace)
打开一个新的浏览器窗口或查找一个已命名的窗口,
createPopup()
创建一个pop-up窗口
focus()
可把键盘焦点给一个窗口
blur()
可把键盘焦点从顶层窗口移开
moveBy(x,y)
可相对当前窗口的坐标移动到指定的像素
moveTo(x,y)
可把窗口的左上角移动到一个指定的坐标(x,y),但不能移出屏幕
resizeTo(w,h)
把窗口大小调整到指定的宽度和高度
resizeBy()
根据指定的像素来调整窗口大小
scrollBy()
可把内容滚动指定的像素数
scrollTo()
可把内容滚动到指定的坐标
setTimeout(code,milisec)
在指定的毫秒数后调用函数或计算表达式,仅执行一次
setInterval(code,millisec)
按照指定的周期(毫秒)来调用函数或计算表达式
clearTimeout()
取消setTimeout()方法设置的计时器
clearInterval()
取消由setInterval()设置的计时器
var tagetWindow =window.open(url,name,features,replace);//返回一个窗口对象
url:声明新窗口显示文档URL,当URL为空字符串或省略时,新窗口将不会显示任何内容。
name:新窗口名称,可用于a,form标签target属性(框架名称),当name窗口存在时,open不创建窗口,返回窗口引用,featurres将被忽略。
features:声明新窗口的浏览的特征。默认为浏览器默认值,
特征值:(top,left,height,width,toolbar,titlebar,status,scrollbars,resiabar,menubar,location,fullscreen,direcries,channelmode)多个逗号隔开。
close():关闭指定的浏览器窗口。
setTimeout(code,millisec):设置一个计时器,在指定的时间间隔调用函数或计算表达式,执行一次。返回计时器ID;
clearTimeout(ID_Of_timeout):取消上面的方法。
setInterval(code,millisec):按照指定的计时器周期调用函数,返回计时器ID
clearInterval(ID_Of_Interval):取消上 面的定时器。
location对象:
包含当前页面的URL地址,如协议,主机名,端口号和路劲等信息;
location对象的属性列表
protocol
设置或返回当前URL协议
host
设置或返回当前URl 的主机名和端口号
hostname
设置或返回当前URL的主机名
port
设置或返回当前URL的端口部分
pathname
设置或返回当前URL的路径部分
href
设置或返回当前显示文档的完整URL(直接location也可以)
hash
URL的锚部分(#之后)
search
设置或返回当前URL的查询部分(问号后部分)
location对象的方法
assign(url)
可加载一个新的文档,与location.href实现的页面导航效果相同
reload(force)
用于重新加载当前文档,默认参数false,当参数为false且文档内容没有改变时,从缓存区从新加载文档,参数false但文档内容改变时,从服务器从新加载文档,当参数为true时,每次都从服务器加载文档,
replace(url)
使用一个新的文档取代当前文档,且不会在history对象中生成新的记录
location对象的属性
navigator对象:
与浏览器相关的信息(APPName,appVersion,platform,userAgent,onLine,cookieEnabied)
history对象:
包含浏览器的历史访问记录,访问过的URL,访问数量等。用于保存用户在浏览网页时的URL地址。length属性表示访问URL 的数量,JavaScript不允许通过history获取URL地址。
history对象方法
back()
可加载历史列表的前一个URL
forward()
可加载历史列表的后一个URL
go( n | url)
可加载历史列表中某个具体页面,参数n为要访问的History的URl 列表中的相对位置,n>0,前进n个地址,n<0,后退n个地址,n=0刷新当前页面,
history对象
进入下一个页面并返回,测试前进按钮
DOM模型:
(Document Object Model,文档对象模型),属于BOM的一部分,用于对BOM中核心对象document进行操作,DOM是一种与平台语言无关的接口,允许程序和脚本动态的访问或跟新HTML或XML文档的内容,结构,样式 。
document对象是BOM对象的核心,提供访问HTML文档对象的属性方法及事件处理。
document.write():用于向文档流中写入内容,当文档流在加载过程中,可写,无需打开关闭,加载完毕,不可在写需要用open方法打开输出流,但打开输出流会清除当前的文档所有内容。
HTML文档中DOM模型
document
form
link
div
radio
checkbox
button
select
textrea
……
document对象是window的子对象,是指浏览器窗口中显示的内容部分,可以通过window.document来访问当前文档的属性和方法,当页面中包含框架时,可以通过window.frames[n].document来访问框架的属性和方法。
document对象的attribute list
body
提供对body元素的直接访问,对于框架定义,该attribute import最外层的frameset元素
cookie
设置或查询与当前文档有关的所有cookie
referrer
返回载入当前文档的文档URL
URL
返回载入当前文档的URL
lastModified
返回文档最后被修改的日期和时间
domain
返回下载当前文档的服务器域名
all[]
返回对文档中所有HTML元素的引用,all[]已经被documen对象的getElementById()等方法代替
forms[]
返回对文档中所有的form对象集合(表单)
images[]
返回对文档中所有的image对象集合,但不包括,标签内定义的图像,images:返回当前文档事务所有图片数组
referrer attribute:用于返回加载指定文档的URL,即跳转前的文档的URL,但要部署在服务器上。
cookie attribute:浏览器保存用户访问服务器的会话信息,允许服务器端下次访问,本质为字符串。document.cookie =cookieStr;
cookie的用法
cookie信息显示位置
cookie本身有一定的大小限制,,每个cookie所存放的数据不能超过4KB。cookie由一些键值对(cookieName--value)构成,根据cookieName来检索的cookie中的信息,包括expires(表示cookie的过期时间,是UTC格式,可以通过Data.toGMTString()方法来生成,当cookie到达过期时间时,cookie就会被删除,默认情况下,当浏览器关闭时cookie立即失效),path(表示允许访问的cookie路径,只有在此路径下才可以读写cookie,一般情况下将path设为“/”,表示同一站点下的所有页面都可以访问cookie)和domain(表示域,可以使浏览器确定哪些cookie能够被提交,如果没有指定域,则域值为该cookie页面所对应的域)等信息。一般情况下,cookie信息都没有经过编码,当cookie中包含空格分号,逗号等特殊符号时,需要使用escape()函数进行编码,当cookie中取出数据时,需要使用UNescape()函数进行解码。
οnlοad=“”//加载页面后执行一段JavaScript文档。可以对cookie信息进行提取匹配
document对象的方法:分为文档流的操作和文档元素到的操作 。
document对象的方法
open()
打开一个新文档,并擦除当前文档的内容
write()
向文档写入HTML或JavaScript代码
writeln()
作用于write相同,内容输出后额外加换行符,在使用标签时有用
close()
关闭一个由document.open()方法打开的输出流,并显示选定的数据
getElementById()
返回对拥有指定ID的第一个对象,多个时返回第一个符合的
getElementsByName()
返回带有指定名称的对象的集合,用于单行文本框的复选框
getElementByTagName()
返回带有指定标签名的对象的集合,顺序于文档中的一样,参数为*时,返回页面中所有的标签元素
getElementByClassName()
返回带有指定Class属性的对象的集合,HTML5有
querySelector()
返回满足条件的CSS选择器的单个元素,当多个时,返回一个
querySelectorAll()
返回满足条件的集合
document对象的方法
document对象的方法
Form对象
Form对象是document的子对象,通过form对象实现表单验证效果,通过form对象可以方位对象的属性和方法,
document.表单名称.属性/document.表单名称.方法(参数)/document.form[索引].属性/document.form[0].方法(参数);
form对象的属性
elements[]
返回包含表单中所有元素的数组,元素在数组中出现的顺序于表单顺序相同,元素.type:表示元素的类型
enctype
设置或返回用于编码表单内容的MIME类型。默认application/x-www-form-urlencoded上传文件时为:multpart/form-data
target
可设置或返回在何处打开表单中的action-URL
method
设置或返回用于提交表单的HTTP方法
length
用于返回表单中的元素的数量
action
设置或返回表单的action属性
name
返回表单的名称
form的方法
submit()
表单数据提交到Web服务器
reset()
对表单中的元素进行重置
提交表单有两种方式:submit()提交按钮,和submit()提交方法,在
focus()方法用于某元素重新获取焦点。select()用于将元素内容出于选中状态。
form对象的方法
Table对象:
在JavaScript中提供Table,TableRow和TableCell对象用于对表格,行和单元格进行操作。
Table对象的属性列表
rows[]
返回表格中所有行(TableRow对象)的一个数组集合,包括中定义的所有行
cells[]
返回表格中所有单元格(TableCell对象)的一个数组集合
border
设置或返回表格边框的宽度(以像素为单位)
caption
设置或返回表格的caption元素
width
设置或返回表格的宽度
cellPadding
设置或返回单元格边框与单nr之间的间距
celllSpacing
设置或返回在表格中的单元格之间的距离
Table对象常用方法
createcCaption()
在表格中获取或创建元素
createTFoot()
在表格中获取或创建 元素
createTHend()
在表格中获取或创建元素
insertRow(index)
在表格的指定位置插入一个新行,新行将被插入index所在行之前,参数index小于0或大于等于表中的行时,抛出异常
deleteRow(index)
从表格中删除指定位置的行
deleteCaption()
在表格中删除元素
deleteTFoot()
在表格中删除 元素
deleteTHend()
在表格中删除元素
TableRow对象的属性和方法(行)
cells[]
返回当前行所包含的单元格数组
sectionRowIndex
返回某一行在他tBody,tHead,TFoot中的位置
rowIndex
返回某一行在表格的行集合中的位置
innerHTML
设置或返回表格行的开始和结束标签之间的HTML内容。
insertCell()
在HTML表中一行的指定位置插入一个空的 标签
deleteCell()
删除表格行中的单元格
TableCell对象的属性
width
设置或表元的宽度返回
rowSpan
设置或返回表元纵跨的行数
colSpan
设置或返回表元横跨的列数
cellIndex
返回行的单元格集合中单元格的位置
innerHTML
设置或返回单元格的开始和结束标签的HTML内容
this表示当前对象元素,parentNode表示当前对象的外层容器(即父节点)。
DOM节点
在DOM模型中,HTML的结构文档是一种树形结构,HTML中标签和属性可以看做是DOM树中的节点,节点分为元素节点,属性节点,文本节点,注释节点,文档节点和文档类型节点,各个节点统称为NOde对象,通过NOde对象的属性和方法可以遍历整个文档类型节点。Node对象的nodeType属性用于获得该节点的类型
DOM节点的常用类型
节点类型
nodeType值
描述
示例
元素(Elenemt)
1
HTML标签
属性(Attribute)
2
HTML标签属性
type = "text"
文本(Text)
3
文本内容
Hello HTMl!
注释(comment)
8
HTML注释段
<-- 内容-->
文档(DOcument)
9
HTML文档根节点
文档类型(DocumentType)
10
文档类型
Element对象继承了NOde对象,是Node对象的一种。
Element对象的属性和方法
attribute
返回指定节点的属性集合
children
非标准属性,返回直接后代的元素节点的集合,类型为Array
childNodes
标准属性,返回直接后代的元素节点和文本节点的集合,类型为NodeList
innerHtML
设置或返回元素的内部HTML
className
设置或返回元素的class属性
firstChild
返回指定节点的首个子节点,
lastChild
返回指定节点的最后一个子节点
nextSibling
返回同一父节点的指定节点之后紧跟的节点
pareviousSibling
返回同一父节点的指定节点之前的节点
parentNode
返回指定节点的父节点,没有父节点时,返回空
nodeType
返回指定节点的节点类型
nodeValue
设置或返回指定节点的节点值
tagName
返回元素的标签名(始终大写)
Element对象的常用方法
getAttitbute()
返回指定属性对应的属性值
getelementsByTagName
返回具有指定标签名的元素子元素的集合,类型为NodeList
hasAttribute()
指定属性存在时返回true,反之
hasChildNodes()
检查元素是否有子节点
removeAttribute()
删除指定属性
replaceChild()
用心节点替换子节点
removeChild()
删除某个子节点,并返回该节点
setAttribute()
为节点添加属性,当属性存在时,则进行替换
NodeList对象是一个节点集合,其item(index)方法用于从节点集合中返回指定索引的节点,length用于返回节点数量 。
获取一个节点所包含的子节点时,可以使用从Node对象中继承的childNodes属性,也可以使用Element对象的children属性,childNodes属性返回集合中包含的元素节点和文本节点,而children属性返回的集合中仅包含元素节点
DOM节点
ID
姓名
销售额度(W)
2
郭全友
3000
3
郑建华
2600
合计
0.0
事件处理
JavaScript采用事件驱动的响应机制 ,用户在页面上进行交互操作时会触发相应的事件,(Event)驱动是指在页面中响应用户操作的一种处理方式,而事件处理是指页面在响应用户操作时所调用的程序代码。事件的产生于响应都由浏览器完成。
事件流和事件对象:DOM结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素节点与根节点之间按照特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程可称为DOM事件流。
事件流顺序有两种,事件冒泡,事件捕获。
冒泡型事件(Event Bubbing)是指从叶子节点沿祖先节点一直向上传递到根节点,基本思路是按照从特定的事件到最不特定的事件目标,IE浏览器对事件的实现模式,
捕获事件(Event Capuring )与冒泡型刚好相反,由DOM树最顶层元素一直到最精确的元素。
当浏览器检查到事件时,调用事件指定的事件处理函数对事件进行处理,在此过程中。s事件中需要传递的信息都是通过事件(Event)对象来完成的,事件(Event)对象包含当前触发事件的状态,大多数的event对象的属性是只读的。因为event对象是事件对象的快照。
Event对象的常见属性
screenX
返回事件发生时鼠标指针相对于屏幕的水平坐标
screenY
返回事件发生时鼠标指针相对于屏幕的垂直坐标
clientX
返回当事件被触发时鼠标指针相对于当前窗口的水平坐标
clientY
返回当事件被触发时鼠标指针相对于当前窗口的垂直坐标
button
可返回一个整数,指示当事件被触发时那个鼠标按键被击中,1左2中3右4(IE中)
altKey
返回一个布尔值,表示ALT键是否一直被按住
ctrlKey
返回一个布尔值,表示Ctrl键是否一直被按住
shiftKey
返回一个布尔值,表示Shift键是否一直被按住
type
返回事件发生的类型,图submit,load或click等
target
返回触发事件的目标元素
Event对象提供了preventDefault()方法用于通知浏览器不在执行与事件关联的默认动作,stopPropagation()用于终止事件的进一步传播。
鼠标事件:
当鼠标在页面某一元素上单击,移动或悬停时,都会触发一个相应的 事件,常见的鼠标事件
常见的鼠标事件
onclick
单击对象触发
ondblclick
双击对象触发
onmouseout
在鼠标指针移动到指定的对象上时触发事件
onmouseout
在鼠标指针移动出到指定对象时触发事件
onmousemove
在鼠标指针移动时触发的事件
onmousedown
当鼠标指针被按下时执行脚本
onmouseup
当鼠标按钮被松开时执行脚本
右键菜单
键盘事件
常见的键盘事件
onkeydown
在用户按下一个键盘时触发事件
onkeyup
在键盘按键松开时触发的事件
onkeypress
在键盘按键被按下并释放一个键时触发的事件
当键盘按下时将Event对象传入事件处理函数,在事件处理函数中通过Event对象可以获得键盘锁按下的键值,
文档事件
文档事件
onload
在页面或图像加载完成后立即触发事件
onunload
在用户退出页面时触发事件
onresize
在窗口或框架被调整大小时触发事件
文档,窗口事件处理
表单即表单元素事件
使用表单输入信息,当表单元素获取焦点,失去焦点,元素内容的改变都会触发相应的事件,提交或重置表单数据时也会触发相应的表单事件。
表单即表单元素事件
表单元素事件
onblur
在对象失去焦点时触发的事件
onfocus
在对象获得焦点时触发的事件
inchange
在域的内容给变时触发的事件
onselect
在文本框中的文本被选中时触发的事件
表单事件
onreset
在表单中的重置按钮被单击时触发的事件。例:onreset ="return resetForm()"
onsubmit
在表单中提交按钮被提交时触发的事件。例: onsubmit ="return checkForm()"
表单事件处理
HTNL5基础
HTML5概述:HTML5不仅是一次简单的技术升级,更代表了未来web的开发方向,HTML5直接使用和标签即可播放视频,音频文件,在HTML5中还引进表单控件校验,元素的拖放,离线编辑,地理位置定位,webSQL数据存储等,特点:
语义特性:HTML5通过一组丰富的页面标签(如:header,footer,article等)更好的实现了HTML的结构化和语义化,
本地存储特性:HTML5 AppCahe,Local,Storage,Indexed DB和File API等技术使得Web应用程序启动时间变短,加载速度跟快,并拥有离线操作等能力。
设备访问特性:HTML5中的设备感知能力有所增强,使得Web程序也能实现传统应用程序的功能,
通信特性:通信能力的增强使得基于页面的聊天程序实时性更高,游戏体验更加流畅,HTML5拥有更高效的服务器推送技术,Server-Sent Events和web Socket使得客户端和服务器之间的通信效率达到了前所未有的高度。
多媒体特性:HTML5引入原生体的多媒体支持,可以在浏览器中直接播放音频和视频文件,不在需要借助视频插件.
三维及图形特性:SVG,Canvas,WebGL及CSS中的3D功能使得图像渲染变得高效方便,在生成图表。2D/3D游戏方面应用比较广泛,
性能与集成特点:Web Worker的出现,使得浏览器支持多线程和后台任务处理,而在XHTMHTTPRequest(Level 2)中新纳入的事件,使跨域请求与表单操作更加简单。
CSS3特性:提供圆角,半透明,阴影,渐变,多背景图以及强大的选择器,变形动画。
移动端特性:使用HTML5进行开发成本低,开发周期短,编写一次代码,能够运行在不同的系统的设备上,HTML5对屏幕适应性好,能够自由嵌入音频视频,且多媒体形式更加灵活。
HTML5语法特征
html5标记方式;文档类型声明方式;指定字符编码: ;
HTML5语法差异:标签不区分大小写,允许部分结束标签可以省略,允许部分标签全部省略(
等)。允许使用单标签,可以结束标签中的结束符/。允许省略结束标签的有.等。boolean属性的设置,如readonly,disabled,checked,selected和multiple等,只写属性名而不指定属性值时,默认为true,当属性值与属性名相同时或属性值为空字符串时,属性值为true,当省略Boolean属性时,属性值为false。属性的属性值不包含特殊字符时,引号可以省略。
HTM文档结构:html文档除了div布局,还添加了
HTML文档结构元素:
:标签用于表示文档,页面或应用程序中独立的,完整的,可以独自被外部引用的内容,该内容可以是一篇文章,短文等。在标签中可以使用
标签用于定义文章的页眉信息,其中包含多个标题(h1~h6),导航部分(nav)或普通内容部分(p,span).
标签用于网页或区段(section)的标题进行组合,当标签中包含多个标题时,可以考虑使用标签将标签组成一组。
标签用于定义页面的各种导航,在一个页面中可以拥有多个元素,做为页面不同部分的内容导航:常见 的内容导航有顶部导航,侧边栏导航,页内导航和翻页导航等。
标签用于对文章内容进行分块,例如章节,页眉,页脚或文档中的其他部分。通常包含一个标题,可以包含多个标签,表示多篇文章,也可以嵌套
标签:专门用于定义当前页面或当前文章的附属信息,包括当前页面或当前文章的相关引用,侧边栏,广告以及导航等有别于主体的内容部分。位于内部时,作为整个页面的侧边栏,位于内部时,作为整片文章的侧边栏。
标签:用于定义脚注部分,包括文章的版权信息,作者授权等信息。
HTML5其他标签
HTML5的拖放API
拖放(draggable)是HTML5标准中非常重要的部分,通过拖放API可以让页面的任意元素变得可拖动的,需要将该元素的属性draggable设置为true,表示可拖放,但不携带数据,使用拖放时,通过ondragstart事件绑定事件监听器,并在监听器中设置所需的携带的数据。
拖放时可能触发的事件
ondragstart
被拖放的HTML元素
开始拖动元素时触发该事件
ondrag
被拖放的HTML元素
拖动元素过程中触发该事件
ondragend
被拖动的HTML元素
拖动元素结束时触发该事件
ondragenter
拖动时鼠标所进入的目标元素
被拖动的元素进入目标元素的范围内时触发该事件
ondragleave
拖动时鼠标所离开的元素
被拖动的元素离开当前元素的范围内时触发该事件
ondragover
拖动时鼠标所经过的元素
在所经过的范围内,拖动元素时会不断地触发该事件
ondrop
停止拖放时鼠标所释放的目标元素
被被拖拽的元素释放到当前元素中,会触发该事件
标签和带有href属性的标签默认是可拖动的。
通过dropEffect与effectAllowed属性相结合可以自定义拖放的效果,使用setData()和getData()方法可以将拖放元素的数据传递给目标元素。
dataTransfer对象的属性和方法列表
dropEffect
设置或返回允许操作类型,可以是none,copy,link或mover;如果操作的类型不是effectAllowed属性所允许的类型,则操作失败
effectAllowed
设置或返回被拖放的操作效果类别,可以是none,copy,copyLink,copyMove,link,linkMove,move,all或uninitialized
items
返回一个包含拖拽数据的dataTransferList对象
types
返回一个DOMStringList。包括了存入dataTransfer对象中数据的所有类型
files
返回一个拖拽文件的集合,如果没有拖拽文件,该属性为空
setData(format,data)
向dataTransfer对象中添加数据
getData(format)
从data Transfer对象读取数据
clearData(format)
清除dataTransfer对象中指定格式的数据
setDragImage(icon,x,y)
设置拖放过程中的图标,参数x,y表示图标的相对坐标
在dataTransfer对象所提供的方法中,参数format用于表示在读取,添加或清空数据时的数据格式,包括text/plain(文本文字格式),text/html(HTML页面代码格式),text/xml(XML字符格式)和text/url-list(URL格式列表)。
HTML5表单元素
HTML5采用了Web Forms 2.0标准新增了许多属性。
form和input标签新增属性
autocomplete
设置表单是否用自动完成的功能,取值可以为on/off,用于form和input标签,同时设置时,后者会覆盖前者。
novalidate
设置表单提交时是否进行验证,使用该属性不进行验证
input标签新增属性
form
为表单元素指定关联的表单,即表单可以位于form标签之外,form="表单ID"
formaction
让按钮动态改变表单提交的URL,即动态的改变表单的的提交服务器处理程序
formenctype
让按钮动态改变表单的enctype属性,
formmethod
让按钮动态设置表单的提交方式,即指定表单不同的提交方式post(隐式)、get(显示)
formtarget
让按钮动态设置表单的target属性,表单提交服务端后返回的处理结果在何处显示“_seif等”
formnovalidate
设置当前元素是否采用HTNL5表单验证,通常提交按钮使用,该属性会覆盖novalidate属性
autofocus
设置在页面加载时是否获得焦点,也页面上只能有一个表单元素具有autofocus属性,无参
placeholder
设置文本框未获得焦点时未输入时,显示的提示信息,当输入内容时,提示信息就会消失
list
引用预定义的datalist,即与datalist数据项绑定在一起,
multiple
允许一个以上的值,
required
输入字段不能为空,提示信息
pattern
规定输入字段的值需要符合指定的模式(正则表达式),当不符合指定模式,提示信息为title的属性值,并阻止表单提交。
新增的input属性
HTML5为 标签新增特定类型,特定范围,数据的有效性验证,日期控件等,
自定义表单验证
HTML5提供了checkValidity()和setCustomValidity()方法,用来实现自定义表单。
checkValidity()方法:用于检测表单中的某个输入是否有效,并返回一个布尔值,当通过验证时返回true否则返回false。表单及表单元素都可以调用checkValidity()方法,默认情况下,在表单提交时调用。
setCustomValidity()方法:默认情况下,浏览器为每个HTML5校验都提供了相应的提示信息,可以使用setCustomValidity()方法来实现。
多媒体播放
HTML5中提供了 和标签,可以直接实现在浏览器中播放视频和音频文件,无须先在浏览器上安装任何插件,只要浏览器本身支持HTML5规范即可,目前各种主流的浏览器都支持。
和支持的属性
src
指定要播放的视频或音频的URL地址
autoplay
指定该属性时,视频或音频装载完后会自动播放,无参
controls
指定该属性时,视频或音频显示播放控制条,无参
loop
指定该属性,视频或音频播放完会再次重复播放,无参
perload
用于是否预加载视频或音频,取值为auto(预加载),meta(只载入元数据),none(不执行加载),会被autoplay覆盖
muted
指定该属性时,视频或音频输出被静音 ,无参
poster
仅对视频标签有效,设置视频下载时的显示图像,或用户单机播放按钮时前显示的图像
width
该属性仅对 标签有效,设置视频播放器的宽度
height
同上,用于设置高度
到目前为止HTML5支持三种视频格式,WebM,Ogg,Mp4。WebM格式具有VP8视频编码和Vorbis音频编码的特点,Oggi格式带有Theora视频编码和Vorbis音频编码格式,Mp4格式带有H.264视频编码格式和AAC音频编码格式,HTNL5推荐使用VP8作为视频编码格式,
未解决浏览器对视频,音频格式的支持问题,可以使用 标签为视频或音频指定锁哥媒体源, 标签的属性列表;
media:设置媒体资源类型,所有浏览器不支持。
src:指定要播放的视频或音频的URL地址,
type:用于设置媒体资源的MIME类型,视频的MINE类型有:vide/ogg ,vide/mp4,video/webm,音频的有MiMe类型有:audio/ogg,audio/mpeg,audio/x-wav;
HTML5多媒体APL:HTML5中提供Video和Audio对象,用于控制视频或音频的回放及当前状态,Video和Vudio对象基本相同,
Video与Audio对象常用的属性
autoplay
用于设置返回是否在就绪后随即播放音频
contrls
用于设置或返回视频(音频)是否该显示控件
currentSrc
用于返回当前视频或音频的URL
currentTime
用于设置返回视频音频中当前播放位置(以秒记)
duration
返回视频(音频)的总长度
defaultMuted
用于设置或返回音频(视频)是否默认静音
ended
返回视频音频的播放是否以结束
readyState
返回视频音频当前的就绪状态
paused
用于设置或返回音频视频是否暂停
volume
用于设置或返回音频视频的音量
loop
用于设置视频或音频结束时是否再次播放
networkState
返回视频(音频)的网络状态
src
用于设置或返回视频的src属性的值
play()
开始播放视频(音频)
pause()
暂停当前播放的视频(音频)
load()
重新加载视频(音频)
canPlayType()
检查浏览器是否能够播放指定的视频(音频)
addTexTrack()
向视频(音频)添加新的文本轨道
Web存储
在HTML5提供了两个与本地存储相关的技术,Web Storage和本地数据库。Web Storage存储机制是针对HTML4中的Cookice存储机制的一种改善,本地数据库是HTML5中一个新增的功能,用于在客户端本地创建一个数据库,将原来保存在服务器数据库中的数据直接保存在客户端端本地,减轻了服务器压力,提高了访问速度。
Web Stotage用于在客户端本地保存数据,包括两种数据存储方式:
window对象提供sessionStorage和localStorage两个子对象,分别用于Session Storage和Local Storage的数据存储,sessionStorage和localStorage对象都是Storage接口的实例,两者对应的属性和方法基本相同,区别在与保存数据的生命周期不同。
(1),Session Storage:将数据保存在Session对象中,Session是指用户在浏览某个网站时,从进入浏览器到关闭的时间,Session对象用于保存用户浏览器在这段时间内所保存的任何数据,当会话失败时,Session Storage保存的数据也会随之丢失。
interface Storage{
readonly attribute unsigned long length;//返回Storage中保存的key/value键值对的数量
DOMString? key(unsigned long index);//返回Storage中第index个key;
getter DOMString? getItem(DOMString key);//返回Storage中指定的key对应的value值
setter create void setItem(DOMString key,DOMString value);//方法用于向Storage存入指定的key/value键值对;
deleter void reoveTtem(DOMString key);//用于将Storage中删除指定key对应的key/value键值对;
void clear();//删除所有键值对;
};
(2),Local Storage:将数据保存在客户端的硬件设备中,当浏览器关闭后,数据任然存在,在下一次打开浏览器可以继续使用,
LocalStorage与SessionStorage的用法基本相同,都是以key/value键值对的方式来存放数据的,区别在与存放时间更久。当需要存放复杂的数据时,可以借助JSON对数据进行包装。然后存储。读取数据时,可以将JSON字符串转换为JSON对象,然后在页面显示。保存时,将JSON对象转换为JSON字符串,然后将JSON字符串保存到LocalStorage中。
本地数据库
在HTML5中内置了两种本地数据库:SQLLite和IndexedDB。SQLite数据库是一种通过SQL语言进行访问的文件型SQL数据库,IndexedDB数据库是一种轻量级NOSQL数据库。
SQLlite数据库:SQLite数据库是一个开源的嵌入式关系型数据库,实现了自包容,零配置和支持事务的SQL数据库引擎,在HTML5中,通过JavaScript对SQLite数据库进行访问操作的具体步骤如下:
(1),创建数据库访问对象:
在创建数据库访问对象时,需要用到openDatabase()方法来创建一个数据库访问对象:
var db = openDatabase(databaseName ,version,description,size);
databaseName表示数据库的名称,version表示数据库版本号,description表示数据库的描述,size表示数据库的大小,该方法返回一个数据库访问对象,当数据库不存在时,则创建一个新数据库并返回数据库访问对象。
(2),使用事务处理:
当访问数据库时,需要使用事务来完成数据库的访问操作事务分为只读事务和读写事务,只读事务使用readTransation()方法实现数据库的查询操作,读写事务使用transaction()方法来实现数据更新及表的基本操作。语法格式基本相同。
db.transaction(function(tx){
tx.executesql(sqlString,[params],
function(tx,rs){
//数据库操作成功数据处理
},
function(tx,error){
}
);
});
db//表示数据库处理对象,tx//表示事务处理对象,rs//表示结果集
executesql()//用于执行sql语句,sqlString表示sql语句,params(可选)表示执行SQL语句所需的参数数组,
第三个参数表示成功执行SQL语句时调函数,第四个参数表示执行失败时调用的SQL语句,
IndexdDB数据库
IndexedDB是一种轻量级NOSQL数据库,与传统的关系型数据库相比通过数据仓库实现对数据的存取,数据库中可以包含一个或多个对象仓库,每个对象仓库是一个记录集合,在对象仓库中,数据以key/value键值对的方式进行保存,每个数据库都对应的键名,且键名不能重复,每条记录由键和值两部分构成。
在HTML5中使用IndexeDB数据库的具体操作步骤,
(1)代码初始化,获得IndexedDB对象。
var IndexedDB = window.indexdDB||window.webkitIndexedDB||window.mozIndexedDB||widow.msIndexedDB;
(2)打开IndexedDB数据库,并且开启一个具体的事务(Transation);通过IndexedDB对象的open()方法打开数据库。当数据库存在时,返回一个请求连接数据库的请求对象(IDBOpenDBRequest),当数据库不存在时,会先创建一个数据库并返回该数据库的请求对象。
var dbRequest = IndexedDB.open(dbName,dbVersion);dnNamr表示数据库名称,dbVersion表示数据库版本,通过请求对象DBRequest的onsuccess(成功)或onerror(失败)事件来指定数据库连接成功(失败)时所执行的事件处理函数。
var Request = indexedDB.deleteDatabase(databaseName);//删除数据库
var dbRequest = indexedDB.open("MYDataBase",1);//获取数据库连接请求
dbRequest.onsuccess = function(e){//成功触发
var idb = e.target.result;
alert('数据库连接成功');
};
dbRequset.onerror = function(e){//失败触发
alert('数据库连接失败');
}
dbrequest.onupgradeneeded = function(e){
var tx = e.target.transaction;
alert('数据库版本更新成功!版本'+e.oldVersion+'=>版本'+e.newVersion);
};
(3)创建对象仓库(Object Store):IndexedDB数据库使用对象仓库(又称对象存储空间)来存放数据,一个数据库中可以包含任意数量的对象仓库,创建对象仓库的格式:
var store = idb.createObjectStore(storeName,optionlParameters);idb表示以连接的数据库对象,storeName表示数据库名称,optionalParameters(可选),是JSON对象类型,用于设置记录中的主键信息。var optionalParameters ={keyPath:'id',autoIncrement:true};//keyPath属性用于设置主键,autoIncrement属性设置主键自动增长。
(4)执行数据库的相关操作(通过监听DOM事件等待操作完成):在IndexedDB API中,数据操作只能在事务中被执行,当事务处理过程中出现异常时,整个事务操作都将取消。事务分为三类:版本更新事务(Onupgraddeneeded),只读事务(Readonly)和读写事务(Readwrite)
//开启事务
var tx = idb.transaction(storeNames,[mode]);
//idb表示某个已连接的数据库对象,参数storeNames表示数据仓库名,或是由字符串数组组成的字符串数组
//mode(可选)表示定义事务的读写模式,readonly和readwrite;
//事务开启及监听事务处理结果
var tx = idb.transaction('users','readwrite');
tx.oncomplete = function(){
alerta("数据保存成功");
};
tx.onabort = function(){
alert("数据保存失败");
};
(5)根据操作结果进一步操作:数据保存,数据遍历等。在数据仓库中保存数据时,首先获得数据库访问对象IndexedDB。然后使用该对象的transaction()方法开启一个读写事务,并使用事务对象的objectStore()方法获得对象仓库。var objectStore = tx.objectStore(storeName);//tx为具有读写属性的事务对象,参数storeName表示数据仓库,调用对象仓库的add()(如果主键在数据仓库中存在数据则保存失败)或put()(主键在对象仓库中存在,将主键对应的数据进行更新,不存在,保存)方法实现数据保存。数据遍历:当遍历数据时,使用对象仓库的openCursor()方法获取游标对象,然后通过游标的移动来实现数据的遍历
//数据保存
var user = {
userName:'guoqy',
age:20,
};//
var tx = idb.transaction('users','readwrite');
var objectStore = tx.objectStore('users');
objectStoer.add(user);
//数据遍历
var trquest = objectStore.openCursor();//返回一个IDBRequest对象
request.onsuccess =function(e){
var cursor = e.target.result;
if(cursor){
alert(cursor.value.usewrName);//获取游标中的内容
cursor.continue();//继续检索
}else{
console.log("检索结束!");
}
};
request.onerror = function(e){
consile.log("检索失败!");
};
Web Worker
HTML5新增了Web Worker技术,通过多线程的方式将执行时间较长的程序段交由后台现程处理。Web Worker技术多用于预先抓取数据缓存本地,供后期使用,后台I/O处理,大数据分析与计算处理,Canvas绘图中的图形数据运算及生成处理,本地数据库中的数据存取及计算处理。
Web Worker基本应用:
使用Worker类的构造函数创建一个Wroker对象(即后台线程),语法:var worker = new Worker(URL);//URL为在后台线层中执行的脚本文件的URL地址。
通过worker对象的postMassage()方法向后台线程发送消息:worker.postMassage(message);
通过监听worker对象的onmessage事件接受后台线程回穿的数据并进行处理:worker.onmessage =function(e){alert(e.data);};
当内部线程执行完毕后,浏览器仍在继续监听对象,直到被终止为止。:worker.terminate();
由于后台线程代码位于独立的JS文件中,所以无法访问当前页面中的window,document,parent等对象。当需要输出测试信息时,可以使用console.log()方法向控制台输出信息。
Worler线程嵌套:在HTML5中,Worker线程中允许嵌套子线程,通过线程的嵌套将一个大的后台线程切分成多个子线程,每个子线程各自完成相对独立的一部分工作。
使用Chrome浏览器使用Web worker需要发布到服务器上才可以用。Firefox与IE11可以本读预览
在HTML5中使用
jQuery基础
Jquery是一个基于JavaScript的开源框架。设计理念为“少写多做”是一种将JavaScript,CSS,DOM,Ajax等特征集于一体的强大框架,通过简单的代码来实现各种页面特效。提供功能有:访问和操作DOM元素,强大的选择器,可靠的事件处理机制,完善的Ajax操作,链式操作方式 。
一,搭建jQuery开发环境:
引入jQuery库:、
jQuery的简单测试:在页面中引入JQuery库后,通过$()函数来获取页面元素,并对元素进行定位,或效果处理,$("muDiv")与$jQuery("muDiv")完全等价。
二,DOM对象和jQuery对象:
在JavaScript中通过getElementById(),getElementsClassName(),querySelector() 等方法回去HTMl元素。
jQuery对象通过jQuery库中的提供的方法来获取元素对象,jQuery对象本身不能直接调用DOM对象的方法,而是将jQuery对象转换成DOM对象后在调用DOM对象的方法,
DOM对象转成jQuery对象:使用jQuery库中的$()方法将DOM对象封装起来,并返回一个jQuery对象,
jQuery对象转换为DOM对象,可以把jQuery对象看做是一个数组,通过索引[index]或者get(index)方法来获取DOM对象。
var domObject =document.getElementById("myDiv");
alert(domObject.innerHTML);
var jQueryObject = $(domObject);//将dom对象转换成jquery对象
alert( jQueryObject.html() );
var domObject1 = jQueryObject[1]//将jQuery对象转换为DOM对象,通过下标获取DOM对象;
var domObject2 = jQueryObject.get(1);//通过get方法获取DOM对象。
jQuery选择器:冒号开头,修饰元素
基本选择器
$("#ID")
根据元素的ID属性进行匹配
单个jQuery对象
$(".class")
根据元素的class属性进行匹配
jQuery对象数组
$("element")
根据元素的标签名进行匹配
jQuery对象数组
$("selector1 ,select2……")
将每个选择器匹配的结果合并后其一返回
jQuery对象数组
$("*")
匹配页面所有元素
jQuery对象数组
层次选择器
$("ancestor descendant")
选取ancsstor元素中的所有的子元素
jQuery对象数组
$("parent >chid")
获取parent元素中的直接子元素
jQuery对象数组
$("prev+next")
获取紧邻prev元素之后的next元素(有共同的父元素)与$("prev").next("next")相同
jQuery对象数组
$("prev~siblings")
获取prev元素之后的siblings兄弟元素,有共同的父元素,不必紧邻与$("prev").nextAll("siblings")相同
jQuery对象数组
过滤选择器
简单过滤选择器
:first
选取第一个元素
单个jQuery对象
:last
选取最后一个元素
单个jQuery对象
:even
选取所有索引值为偶数的元素,从0开始
jQuery对象数组
:odd
选取所有索引值为奇数的元素,从0开始
jQuery对象数组
:header
选取所有标题元素
jQuery对象数组
:foucs
选取当前获取焦点的元素
jQuery对象数组
:root
获取文档的根元素
单个jQuery对象
:animated
选取所有正在执行动画效果的元素
jQuery对象数组
:eq(index)
选取所有索引等于index的元素,0开始
单个jQuery对象
:gt(index)
选取索引大于index的元素,0开始
jQuery对象数组
:lt(index)
选取所有小于index的元素,0开始
jQuery对象数组
:no(selector)
选取selector之外的元素,0开始
jQuery对象数组
内容选择过滤器
内容过滤选择器
:contains(text)
选取包含text内容的元素
jQuery对象数组
:has(selector)
选取包含标签名selector的元素
jQuery对象数组
:empty
选取所有不包含子元素或文本的空元素
jQuery对象数组
:parent
选取含有子元素或文本的元素
jQuery对象数组
可见性过滤选择器
:hidden
选取所有不可见的元素,或者type为hidden的元素
jQuery对象数组
:visible
选取所有可见元素
jQuery对象数组
属性过滤选择器
[attribute]
选取包含给定属性的元素
jQuery对象数组
[attribute = value]
选取属性等于某个特定值的元素
jQuery对象数组
[attirbute !=value ]
选取属性不等于或不包含某个特定值的元素
jQuery对象数组
[attribute^=value]
选取属性以某个值开始的元素
jQuery对象数组
[attribute$=value]
选取属性以某个值结尾的元素
jQuery对象数组
[attribute*=value]
选取属性中包含某个值的元素
jQuery对象数组
[attribute1][attribute2][atttibute3]
复合属性选择器,需要同时满足对个条件时使用
jQuery对象数组
子元素过滤器
:first-child
选取每个父元素中的第一个元素,结构上第一个
jQuery对象数组
:last-child
选取每个父元素的最后一个元素,结构上第一个
jQuery对象数组
:only-child
当父元素只有一个子元素时,进行匹配,负责不匹配
jQuery对象数组
:nth-child(N|odd|even)
选取每个父元素中第N个子元素或奇偶元素
jQuery对象数组
:first-of-type
选取每个父元素中的第一个元素,相同类型第一即可
jQuery对象数组
:last-of-type
选取每个父元素的最后一个元素,相同类型第一即可
jQuery对象数组
:only-if-type
当父元素只有一个子元素时匹配,否则不匹配,相同类型一个即可
jQuery对象数组
表单对象属性过滤选择器
:enabled
选取表单中属性为可用的元素
jQuery对象数组
:disabled
选取表单中属性为不可用的元素
jQuery对象数组
:checked
选取表单中被选中的元素(单选,复选)
jQuery对象数组
:selected
选取表单中被选中的选项元素
jQuery对象数组
在jQuery对象中,text()方法用于设置或显示元素的文本内容,html()显示设置元素是HTML内容,length用于表示所选元素集合的数量
:input
选取input,textarea,select,button元素
:submit
返回jQuery对象数组
:text
返回jQuery对象数组
:image
返回jQuery对象数组
:password
返回jQuery对象数组
:button
返回jQuery对象数组
:radio
返回jQuery对象数组
:file
返回jQuery对象数组
:chrckbox
返回jQuery对象数组
:hidden
返回jQuery对象数组
jQuery的基本操作
通过jQuery的选择器定位到页面得每个元素后,可以对元素进行各种操作。
属性操作
属性操作函数
attr(name|pro|key,val|key,fn)
获取或设置元素的属性,参数name表示获取该元素的属性值,properties表示由key/value键值对构成的集合,如JSON对象,key,val表示需要设置的属性名和属性值,key,fu表示使用函数返回值做属性的值。
removeAttr(name)
删除元素匹配元素的指定属性,name为属性名
prop(name|pro|key,val|fn)
获取或设置匹配元素集合中的第一元素属性,多用于boolean类的属性操作,参数与attr相同,只能设置特性
removeProp(name)
删除由prop()方法对属性进行操作的属性集,
参数function(index,oldAttr):表示使用函数的返回值作为属性的值,index表示当前元素的索引位置,oldAttr表示当前元素在修改之前的属性值。
样式操作
样式操作
addClass(className|calssName1 className2...calssNamen|function(index,oldClassNmae))
方法用于对一个或多个匹配元素追加样式,calssname 表示样式名
removerClass( |className|calssName1 className2...calssNamen)
方法用于移除匹配元素的一个或对个样式,也可以一次性移除元素的所以样式
toggleClass(className|calssName,switch)
方法法用于元素之间的重复切换,当元素的指定样式存在时,将该样式移除,否者添加该样式,className表示切换样式名,参数switch表示切换开关,默认为true,当为true时允许切换,反之不切换。
css(attrName|key,value|properties|attrName,function(index,oldValue))
参数attrName表示要访问的属性名称,返回该属性的值,key,value表示设置某一样式,key为属性名,value表示属性值,properties表示由key/value键值对构成的集合,如JSON对象,key,val表示需要设置的属性名和属性值,attr,fu表示使用函数返回值做属性的值。
hasClass()
是否有该属性
内容操作
在jQuery中提供html()和text()方法用于操作页面元素的内容,val()方法用于操作表单元素的值,当方法没有提供参数值时,表示获取匹配元素的内容或值,当方法携带参数时,表示对匹配元素的内容或值的修改,
内容操作方法
html( |htmlCode|function(index,oldHtmCode))
html()方法用于获取第一个匹配元素的HTML内容或修改元素的HTML内容,该方法仅对XHTML文档有效,不能用于XML文档,参数function(index,oldHtmlCode)表示将函数的返回值作为当前元素的HTML内容,index表示当前元素在集合中的位置,oldHtmlCode表示当前元素在修改之前的HTNL内容
text( |textContent|function(index,oldTextContent))
无参方法用于返回第一个匹配元素的文本内容,有参方法用于设定文本内容,同上
val( |newValue|arrayValue|function(index,oldValue) )
val()方法用于设置或获取表单元素的值,包括文本框,下列列表,单选框和复选框等元素,当元素允许多个时,返回一个包含被选项的数组,val()参数同上。
提交 喜欢我的理由:
可爱
温柔
大方
嗯,她讲,我看的是未来而不是现在,很高兴听到她讲这样的话,至少算是对你的答复吧,所以那,要努力学习,不浪费一点时间,提高自己的各方面能力,嗯,要变得很厉害才可以去喜欢她,加油吧生活,不要忧郁那么多事情啦,为了父母,为了她,为了自己还不愿死去的心那。
18.10.3 早
jQuery事件处理
事件处理是指在某一时刻页面元素对某种操作的响应处理,jQuery中的事件处理是在JavaScript事件处理机制基础上的进一步扩展与增强,提高了事件处理能力。
页面加载事件:对整个页面而言,可以看做一个DOM树,在jQuery中$(document).ready()方法用于处理页面加载完毕时的事件,极大的提高了web响应速度,DOM元素 就绪就会进行事件处理,可以多次执行。
$(domcument).ready()有两种简写形式:
$(function(){});$().ready();
事件绑定:所谓事件绑定,是指将页面元素的事件类型与事件处理函数关联到一起,当事件触发时调用事先绑定的事件处理函数,在jQery中,提供了强大的API来执行事件的绑定操作,如bind(),one(),live(),toggle(),delegate(),on()和hober()等
bind():方法用于对匹配元素的特定事件绑定的事件处理函数:bind(types,[data],fu);参数types表示事件类型。是一个或多个事件类型构成的在字符串,类型之间空格隔开,事件如鼠标键盘事件,鼠标事件click,submit,mouseover和mouseup等,参数data(可选)表示传递给函数的额为数据,在事件处理函数中通过event.data来获取所传入的额为数据;参数fu是指所绑定的事件处理函数。
$("p").bind("click",function(){
alert($(this).text());
});//绑定一个事件
$("p").bind("mouseenter mouseleave",function( ){
$(this).toggleClass("entered");
});
$("button").bind({
click:function(){$("p").slideToggle();},
mouseover:function(){$("body").css("background-color","red");},
mouseout:function(){$("body").css("background-color","#ffffff");}
});//绑定多个事件
function handler(event){
alert(event.data.foo);
}//传递数据
$("p").bind("click",{foo:"bar"},handler);
mouseover和mouseout在父元素和其子元素都可以触发,当鼠标穿过一个元素时,触发次数得依子元素数量而言。
mouseenter(当鼠标指针穿过(进入)被选元素时,会发生 mouseenter 事件)和mouseleave(当鼠标指针离开被选元素时,会发生 mouseleave 事件。)只在父元素触发,当鼠标穿过一个元素时,只会触发一次。
mouseover和mouseout比mouseenter和mouseleave先触发
因此一般mouseover和mouseout一起使用,mouseenter和mouseleave一起使用
jQuery为常用的事件(如click,mouseover和mouseout等)提供一种简单的写法
$("input[type=button]").click(function)(){$(this).toggleClass("entered");});
this是执行上下文(Excution Context)的一个重要的对象,用于指明触发事件的对象本身,$(this)是jQuery对this对象的封装,用于在事件处理中收集事件触发者的信息。
one():用于对于匹配元素的特定事件绑定一个一次性的事件处理函数,事件处理函数只会被执行一次,one()方法的语法格式与bind()方法基本相同,one(types,[data],fn),参数意思相同。$("p").one("click",function(){alert($(this).text(0);});
toggle([speed],[easing,[fu1,fu2,fu3,fu4...]):方法用于模拟鼠标连续单机事件,参数speed用于设置元素的隐藏(显示)速度,默认0,取值范围是slow,normal,fast或毫秒数。参数easing表示指定动画的切换效果,取值是swing(默认)和linear。参数fn1,fn2表示1~n次单机的事件处理函数,在事件处理时为循环机制即最后一次处理完循环到第一次。同时具有参数speed和fu时,表示以speed上速度显示或隐藏,在动画完成后在执行fu事件处理函数。该方法在1.9版本中被删除。
live():bind()方法绑定的事件,只能针对页面中存在的元素进行绑定,而bind()绑定后新增的元素没有事件响应,使用live()方法能够对页面所有匹配元素绑定操作事件,包含存在的元素和新增加的元素,1.7+需要版本插件,live(types,fu)参数types表示事件类型,是一个或多个事件构成的字符串,空格隔开,fu表示事件处理函数。
delegate(childSelector,[types],[data],fu)方法在匹配元素的基础上,对其内部符合条件的元素绑定事件处理函数。参数childSelector表示一个选择器字符串,筛选触发事件的元素,参数types表示事件类型,是一个或多个事件构成的字符串,空格隔开,参数data(可选)表示传递给函数的额外数据,通过event.data调用,fu表示事件处理函数,
$("div").live("click",function(){
alert($(this).html());
});
&("div").delegate("buntton","click",function(){
$("p").slideToggle();
});
$("div").delegate("#DataBindBtn","click",{mas:"额外传递的数据"},function(e){
alert(e.data.mas);
});
delegate()事件处理程序优于live(),适用于当前存在和未来增加的元素。在.17+要优先考虑on()方法。
on(types,[childSelector],[data],fu)1.7+中新增,用于绑定事件所需的函数,可以代替bind(),line(),delegate()等方法。参数types表示事件类型,是一个或多个事件类型构成的字符串,childSelector表示一个选择器字符串,筛选元素,data(可选)表示传递给函数的数据,fu表示事件函数。
hover(overfu,[outfu])方法用于模拟鼠标悬停事件,当鼠标悬停在某元素上是触发overfu函数,移除是触发outfu,只有一个时触发两次overfu。
解除事件绑定:在jQuery中提供了unbind()he undelegate()方法,分别解除bind()方法和delegate方法通过参数指明解除的绑定事件,默认全部解除,在1.7+中提供off()方法用于解除on(),bind(),delerate()方法,参数与on相同。
事件对象(event)
jQuery事件解决浏览器兼容问题
事件对象常见属性
pageX
鼠标指针相对文档的左边缘的位置
pageY
鼠标指针相对文档的上边缘的位置
target
返回触发事件的元素
type
返回事件的类型
whilch
返回鼠标键盘按下的键
data
用于传递事件之外的额外数据
事件对象常用的方法列表
preventDefaule()
阻止元素发生默认的行为(当单机提交按钮时阻止提交)
stopPropagation()
阻止事件冒泡
isDefaultPrevented()
根据事件的冒泡是否调用过preventDefaule()方法返回一个布尔值
isPropagationStopped()
根据事件对象中是否调用stopPropagation()方法来返回一个布尔值
jQuery进阶
jQuery文档处理
DOM元素有两个属性,innerHTML和outerHTML。其中innerHTML表示当前元素中HTML内容(不包括元素的标签部分),outerHTML表示当前元素的所有内容(包括元素的HTML内容和元素的标签两部分)。
代码中$("span",this)表示在当前元素中查找元素,$("span",this).length表示当前元素中拥有的元素个数。
1,创建节点,根据W3c中的HML DOM标准,HTML文档的所有内容都是由节点,包括文档节点,元素节点,文本节点,属性节点和注释节点构成,节点相互关联,形参DOM树,在页面添加元素,需要找到该元素的上一级节点,再通过$()完成节点的创建,然后完成节点的添加操作,$()函数用于动态创建元素节点,
$(htmlcode);//htmlCode表示动态创建DOM元素的HTML字符串;返回由该元素封装的jQuery对象。var span1 = $(" ");
2,插入节点:在动态创建HTML元素后,还需要将节点插入到文档,分内部插入和外部插入
插入节点的方法列表
内部插入
$(selector).append(content|function(index,oldHtmlCode))
向每个匹配的selector元素内部尾部追加由content|fu指定的内容,selector表示追加内容的元素,content表示要追加的内容
$(content|selector).appendT(selector)
把所有匹配的元素或内容追加到指定的元素的尾部,content|selector表示要追加的内容,selector表示追加内容的元素
$(selector).prepend(content|function(index,oldHtmlCode))
向每个匹配的元素内部头部前置内容,select表示插入内容的元素,content表示要插入的内容
$(content|selector).prependTo(selector)
把所有匹配的元素|内容前置到指定的元素的头部,content|selector表示插入的内容,selector表示插入内容的元素
外部插入
$(selector).after(content|function(index[,htmlCode])).
在每个匹配元素之后插入内容,selector表示所匹配 的元素,content|fu表示插入的内容,
$(content|selector).insertAtter(selector)
把所有匹配的元素插入指定元素的后面,content|selector表示被插入的内容,selector表示所匹配的元素
$(select).before(content|function(index[,htmlCode]))
在每个匹配的元素之前插入内容,selector表示所匹配的元素,content|fu表示被插入的内容。
$(selector|selector)insertBefore(selector)
把所有匹配的元素插入到指定元素的前面,selector|content表示要插入的内容,selector表示匹配的元素。
function(indec,oldHtmlCode):表示将函数的返回值作为插入的内容,index表示当前元素在集合索引中的位置,oldHtmlCode表示当前元素在修改前的HTML内容。
function(index[,htmlCode]):表示将函数的返回值内容作为插入的内容,index表示当前元素在集合的索引位置,htmlCode表示当前元素的HTNL内容,当插入内容时,不会改变元素中的HTMl内容。
在追加和插入元时,插入的内容可以是HTML字符串,DOM元素(或数组),Jquery对象,函数(返回值),当操作内容是DOM元素时(即appendTo()与prependTo(),insertAtter(),insertBofore),该元素将从原位置上消失,即该操作属于元素的移动,不是复制。
3, 复制节点:在jQuery中提供clone()方法,用于复制DOM节点(包括子节点和属性节点)
语法:$(selector).clone(includeEvents[,deepEvents]):selector表示需要复制的节点元素,includeEvents(可选,布尔型),表示是否同时复制元素的附加数据和绑定事件,默认false。参数deeEvents(可选,布尔型)表示是否同时复制元素中的所有子元素的附加数据和绑定事件,默认false。
4, 删除节点:在jQuery中提供remover()和datach()方法,用于删除元素节点,empty()方法用于清空当前颜色中的内容,标签部分保留
remover():删除所匹配的元素,包括元素的文本节点和子节点。返回jQuery数组,包含被删除元素的基本内容,不包含所绑定的事件和附加数据信息。$(selector).remover();
detach():方法用于删除所匹配的元素,包括该元素的文本节点和子节点。返回jQuery对象或数组,包含含被删除元素的所有数据,
empty():用于清空元素的内容(包括所有的文本和子节点),但不删除该元素。
5,包裹节点:指在现有节点的外围包裹一层其他的元素标签,使当前节点成为新的元素子节点,jQuery提供了wrap()与wrapAll()方法
$(selector).wrap(html|Element):用于将所匹配的元素使用HTML或DOM元素包裹(单个包裹)selector 表示被包裹的匹配元素,html表示用于包裹的html标签,Element表示用于包裹的DOM元素
$(selector).wrapAll(html|Element):用于将所匹配的元素使用HTML或DOM元素整体包裹,selector表示被包裹的匹配元素,html和Element表示包裹的HTML标签和DOM元素。
unwrap():用于删除所匹配的元素的父节点,能够快速取消wrap()方法产生的效果。
遍历节点:在jQuery中对DOM遍历操作:祖先遍历,后代遍历,同胞遍历,和筛选遍历
祖先遍历:又称向上遍历,常用的方法有:
$(selector).parent([childSelector]):用于返回所匹配元素的直接父元素,并允许使用选择器进行筛选,
$(selector).parents([childSelector]):用于返回所匹配元素的所有的祖先节点,并允许使用选择器进行筛选,
$(selector).parentsUntil([childSelctor|element]):用于返回所匹配元素与改定元素之间的所有祖先节点,并允许选择器筛选。
$(selector):表示所匹配的元素,参数childSelector(可选)表示指定的选择器,用于筛选$("span").parent(".imageDiv")//返回span标签具有.image样式的直接父元素。
后代遍历:又称向下遍历,通过向下遍历查找元素的后代元素
$(selector).children([childSelector])方法用于返回所匹配元素的直接子元素,允许选择器筛选。
$(selector).find(expression|jQuery|element):用于返回所匹配元素的所有后代元素,允许表达式,jQuery对象或DOM对象对元素筛选。
$(selector).contents():用于返回所匹配元素的子元素(包括文本节点和注释节点),还可以用于查找iframe页面的子元素
$(selector):表示所匹配的元素,参数childSelector(可选)表示指定的选择器,参数expression|jQuery|element表示表达式,jQuery对象或DOM对象,用于筛选。
同胞遍历:同胞节点指拥有相同父元素的节点,jQuery同胞遍历的方法:
$(selector).siblings():用于返回所匹配元素的同胞元素(但不包括匹配元素),并使用选择器进行筛选。
$(selector).next([childSrlrctor]):用于返回所匹配元素的紧邻的同胞元素,并允许使用选择器进行筛选,
$(selector).nextAll([childSelector]):用于返回所匹配的元素所有紧随的同胞元素,并允许使用选择器进行筛选,
$(selector).nextUntil([express|element]):用于返回用于返回所匹配元素与改定元素之间的所有同胞元素
节点过滤:
$(selector).first(expression|jQueryObject|element|function(index)):用于返回符合筛选规则的元素。
$(selector).not(expression|jQueryObject|element|function(index)):返回规则之外的其他元素,功能与first相反。
expression:表示对匹配的元素使用expression选择器进行筛选。
jQueryObject:表示在匹配的元素中筛选jQueryObject类型的元素。
elememt:表示在匹配的元素中筛选element类型的元素
function(index):表示使用函数筛选,index表示当前元素在集合中的位置,当函数返回true时符合筛选条件,反之。
jQuery动画效果:
动画及特效的方法
$(selector).show([speed],[fu])
显示被隐藏的元素,speed表示速度,默认0,取值可以为slow,normal,fast,fu表示动画完成时触发的函数
$(selector).hide([speed],[fu])
隐藏可见元素,speed表示速度,默认0,取值可以为slow,normal,fast,fu表示动画完成时触发的函数
$(selector).slideDown([speed],[easing],[fu]);
以滑动的方式显示隐藏可见元素,
$(selector).slideUp([speed],[easing],[fu])
以滑动的方式隐藏可见元素
$(selector).slideToggle([speed],[easing],[fu])
使用滑动效果,在显示和隐藏状态之间进行切换,
$(selector).fadeIn([speed],[easing],[fu])
使用淡入效果显示一个隐藏的元素
$(selector).fadeTo([speed],[easing],[fu])
使用淡出效果隐藏一个显示的元素,隐藏后占据空间
$(selector).fadeToggle([speed],[easing],[fu])
在fadeTo和FadeIn之间切换,隐藏后不占据空间
$(selector).amimate(([speed],[easing],[fu])
创建自定义动画函数
$(selector).stop()
停止当前正在运行的动画
$(selector).delay(毫秒数])
将队列中的函数延时执行,即两次动画的时间间隔
$(selector).finish()
停止当前正在运行的动画,删除所有排练动画,并完成匹配元素的所有动画
数组和对象的擦操作:
$(selector).each(function(index,element)):多用于DOM对象数组中的元素遍历
$.each(object,function(index,element)):Array数组和JSON对象遍历
function表示回调函数,用于对数组中的元素遍历,index表示遍历下标,element表示值。
$.extend(target,object..)|({propertyName:propertyValue})|({functionName:function(){}}):
参数target表示扩展的目标对象,参数object表示扩展对象的参照,将参照的属性扩展到目标对象。参数propertyName|functionName表示扩展jQuery对象本身的属性方法,用于在jQuery命名空间上新增一个新属性方法。
$.merge(firstArray,secondArray):用于将两个数组进行合并。把第二和合并到第一个。返回第一个。
$.unique(target):根据元素在文档中出现的先后顺序对DOM元素数组进行排序。
$.parseJSON(JSON字符串):用于将JSON字符串转换为JSON对象。
jQuery插件:开发的jQuery插件常见的有三种:封装全局函数的插件,封装对象方法的插件,自定义选择器插件。
封装全局函数的插件:将独立的函数追加到jQuery命名空间之下,通过jQuery或$进行访问。
封装对象方法插件:指将对象方法封装起来,用于对选择器所获得的jQuery对象进行操作。通过$.fu.方法名的方式添加。
自定义选择器插件
在开发jQuery插件时注意:
插件名推存使用jQuety.[插件名].js
所有的对象方法都附件到Jquery.fu对象上,所有的全局函数都附加到jQuery对象本身。
在插件内部this表示获取当前选择器的jQuery对象,在普通事件中表示this表示触发事件的当前DOM元素。
以分号结束。
插件返回一个jQuery对象,保证链式操作。
嗯,前端的笔记就做到这里啦,还差的很远,路漫漫其修远兮,要抽时间实验,以后做什么在想吧,她呀!还是先找一份工作重要吧。我想,我并不赞同《瓦尔登湖》中讲的那样,倘若只有自己,谁不愿意过那样的生活呢。打工去买车票是一个正常人,而行走去旅行那么异类的事,爸爸妈妈怎么办哎?好困哎,我要休息啦!!!
2018.10.14
你可能感兴趣的:(前端)
day15|前端框架学习和算法
universe_01
前端 算法 笔记
T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的
vue element 封装表单
影子信息
vue vue.js javascript 前端
背景:在前端系统开发中,系统页面涉及到的表单组件比较多,所以进行了简单的封装。封装的包括一些Form表单组件,如下:input输入框、select下拉框、等实现效果:理论知识:表单组件官方链接:点击跳转封装组件:封装组件的思路:不封装element组件,每一个input组件绑定一个form对象,例如官网。简单封装element组件,利用for循环生成form表单的每一项el-form-item。进
前端面试每日 3+1 —— 第39天
浪子神剑
今天的面试题(2019.05.25)——第39天[html]title与h1、b与strong、i与em的区别分别是什么?[css]写出你知道的CSS水平和垂直居中的方法[js]说说你对模块化的理解[软技能]公钥加密和私钥加密是什么?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。前端面试每日3+1题,以面试题来驱动学习,每天进步一点!让努力成为一种习惯,让奋斗成为一种享受!欢迎在Iss
前端数据库:IndexedDB从基础到高级使用指南
文章目录前端数据库:IndexedDB从基础到高级使用指南引言一、IndexedDB概述1.1什么是IndexedDB1.2与其他存储方案的比较二、基础使用2.1打开/创建数据库2.2基本CRUD操作添加数据读取数据更新数据删除数据三、高级特性3.1复杂查询与游标3.2事务高级用法3.3性能优化技巧四、实战案例:构建离线优先的待办事项应用4.1数据库设计4.2同步策略实现五、常见问题与解决方案5.
【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(三)
笙囧同学
java 前端 状态模式
核心功能设计用户管理系统用户管理是整个系统的基础,我设计了完整的用户生命周期管理:用户注册流程验证失败验证通过验证失败验证通过用户名已存在用户名可用失败成功用户访问注册页面填写注册信息前端表单验证显示错误提示提交到后端后端数据验证返回错误信息用户名唯一性检查提示用户名重复密码加密处理保存用户信息保存成功?显示系统错误注册成功跳转登录页面登录认证机制深度解析我实现了一套企业级的多层次安全认证机制:认
从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战
作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:
[email protected] 各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯前言在AI技术飞速发展的今天,如何将前沿的大模型技术与实际应用相结合,一直是我们开发者关注的焦点。今天,笙囧同学将带大家从零开始,构建一个基于GigaChatAI的艺术创作平台,实现React前端+Django后端的完整全栈解决方案。这不仅仅是
14.tornado操作之应用Websocket协议实现聊天室功能
孤寒者
Tornado框架从入门到实战 websocket tornado 聊天室功能实现 python
目录:每篇前言:1.什么是WebSocket(1)定义(2)优点(3)和HTTP对比(4)适用场景2.WebSocket关键方法3.本tornado项目中使用WebSocket(1)准备一个聊天室的页面:第一步:编写视图:第二步:编写接口:(app.py中加入以下接口!)第三步:编写前端页面:测试接口——响应OK!(2)使用WebSocket:(3)聊天室的聊天功能的最终实现:第一步:战前准备第二
为什么学习Web前端一定要掌握JavaScript?
web前端学习指南
为什么学习Web前端一定要掌握JavaScript?在前端的世界里,没有什么是JavaScript实现不了的,关于JS有一句话:凡是可以用JavaScript来写的应用,最终都会用JavaScript,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端上。现如今我们在为网站写任何一个主要功能的时候都需要有懂能够用JavaScript写前端的开发人员。
小架构step系列25:错误码
秋千码途
架构 java
1概述一个系统中,可能产生各种各样的错误,对这些错误进行编码。当错误发生时,通过这个错误码就有可能快速判断是什么错误,不一定需要查看代码就可以进行处理,提高问题处理效率。有了统一的错误码,还可以标准化错误信息,方便把错误信息纳入文档管理和对错误信息进行国际化等。没有错误码的管理,开发人员就会按自己的理解处理这些错误。有些直接把堆栈直接反馈到前端页面上,使用看不懂这些信息体验很差,也暴露了堆栈信息有
Java朴实无华按天计划从入门到实战(强化速战版-66天)
岫珩
Java 后端 java 开发语言 学习 Java 时间安排 学习计划
致敬读者感谢阅读笑口常开生日快乐⬛早点睡觉博主相关博主信息博客首页专栏推荐活动信息文章目录Java朴实无华按天计划从入门到实战(强化速战版-66天)1.基础(18)1.1JavaSE核心(5天)1.2数据库与SQL(5天)1.3前端基础(8天)2.进阶(17天)2.1JavaWeb核心(5天)2.2Mybatis与Spring全家桶(6天)2.3中间件入门(4天)2.4实践项目(2天)3.高阶(1
《跨域资源共享CORS的深层逻辑与前端实践精要》
不同源头的资源交互已成为常态,而跨域资源共享(CORS)正是支撑这种交互的隐形架构。现代Web安全体系中平衡开放与防护的精妙设计。理解CORS的深层逻辑,不仅能解决实际开发中的跨域难题,更能触及网络安全与资源流通的核心矛盾,为前端工程师构建稳健的应用提供底层认知支撑。跨域资源共享的诞生,源于网络安全与应用发展的必然冲突。浏览器的同源策略,作为早期网络安全的基石,通过限制不同源文档的交互,有效阻挡了
深入了解 Kubernetes(k8s):从概念到实践
目录一、k8s核心概念二、k8s的优势三、k8s架构组件控制平面组件节点组件四、k8s+docker运行前后端分离项目的例子1.准备前端项目2.准备后端项目3.创建k8s部署配置文件4.部署应用到k8s集群在当今云计算和容器化技术飞速发展的时代,Kubernetes(简称k8s)已成为容器编排领域的事实标准。无论是互联网巨头、传统企业还是初创公司,都在广泛采用k8s来管理和部署容器化应用。本文将带
大厂都在用的前端缓存策略,你掌握了吗?
AI架构全栈开发实战笔记
前端 缓存 ai
大厂都在用的前端缓存策略,你掌握了吗?关键词:前端缓存、HTTP缓存、ServiceWorker、CDN缓存、缓存策略、性能优化、浏览器缓存摘要:本文将深入探讨前端开发中常用的缓存策略,从浏览器缓存到ServiceWorker,从HTTP缓存头到CDN缓存,全面解析大厂都在使用的高效缓存技术。通过生动的比喻和实际代码示例,帮助开发者理解并掌握这些提升Web应用性能的关键技术。背景介绍目的和范围本文
26. 什么是雪碧图,作用和原理了解吗
yqcoder
前端面试-CSS css 前端 html
总结小图合成一张,使用background来使用,减少资源请求一、什么是雪碧图?雪碧图(CSSSprite)是一种前端优化技术,指的是将多个小图标合并成一张大图,通过CSS控制显示其中的某一部分。它常用于网站中图标、按钮等小图较多的场景。二、雪碧图的作用作用说明✅减少HTTP请求次数合并多个图片为一张图,减少请求资源数✅提升页面加载速度尤其在图片较多时效果明显✅避免图片加载闪烁鼠标悬停切换图片时不
H5UI微信小程序前端框架实战指南
ai
本文还有配套的精品资源,点击获取简介:H5UI是一个为微信小程序开发设计的前端框架,基于H5技术,提供简洁高效的组件库。框架集成了丰富的UI元素,如按钮、表格、导航栏等,简化了界面布局和交互的实现。通过安装、引入、使用组件和事件绑定四个步骤,开发者可以轻松构建功能齐全的应用。了解性能优化等注意事项对于高效开发同样重要。1.微信小程序前端开发框架介绍微信小程序概述微信小程序是微信官方推出的一种无需下
Ubuntu安装LAMP
L_h1
测试 ubuntu linux
在安装vim时遇到了一个问题:E:无法获得锁/var/lib/dpkg/lock-frontend-open(11:资源暂时不可用)E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?解决办法:强制解锁sudorm/var/lib/dpkg/lock-frontendsudorm/var/cache/apt/archives/locksud
震惊!DOM变化监控神器MutationObserver,前端开发必知的隐藏武器!
coding随想
JavaScript 前端 javascript html5
一、什么是MutationObserver?如果你是一个前端开发者,一定会遇到这样的场景:页面动态加载内容后,某些操作失效了。比如,你写了一个监听按钮点击的代码,但按钮是通过AJAX动态加载的,你的代码根本无法触发。这个时候,你就需要一个“监控哨兵”——MutationObserver,它能实时监听DOM树的变化,帮你捕获那些“暗中作祟”的节点变动。MutationObserver是HTML5引入
Coze Studio 架构拆解:AI Agent 开发平台项目结构全分析
代码简单说
2025开发必备(限时特惠) 架构 人工智能 Coze Studio 架构 AI Agent 开发平台 全栈 AI 工程化 图解架构
CozeStudio架构拆解:AIAgent开发平台项目结构全分析标签:CozeStudio项目架构、领域驱动设计DDD、全栈开发规范、Hertz框架、前后端协作、云原生容器、前端测试、IDL接口设计、微服务解耦、AI开发平台源码分析在最近研究AIAgent开发平台的过程中,我深入分析了刚刚开源的CozeStudio项目。这套系统是国内少有的开源全栈AI工程化项目,代码整洁、架构先进,特别是它基于
关于前端的性能优化
性能优化主要涵盖了以下四个方面:(tip:仅代表个人总结,如有不当,还希望看到的大佬多多指示)减少网络请求:合并文件、使用CDN、启用缓存。优化资源加载:代码分割、懒加载、图片压缩。提升渲染性能:减少重绘回流、防抖节流、使用WebWorker。监控和迭代:定期使用工具检测性能,持续优化。一、网络层面优化减少HTTP请求合并文件:将多个CSS或JavaScript文件合并成一个,减少请求次数。使用C
linux网卡显示未知未托管,linux有线网络显示设备未托管
NetworkManagerNetworkManager是为了使网络配置尽可能简单而开发的网络管理软件包,如果使用DHCP,NetworkManager会替换默认的路由表、从DHCP服务器获取IP地址并根据情况设置域名服务器,NetworkManager的目标是使网络能够开箱即用。NetworkManager由两部分组成:一个以超级用户运行的守护进程(network-manager);一个前端管理
页面开发样式和布局入门:Vite + Vue 3 + Less
页面开发样式和布局入门:Vite+Vue3+Less引言在现代前端开发中,样式和布局是页面开发的核心部分。随着技术的不断发展,Vite、Vue3和Less等工具和框架的出现,使得前端开发变得更加高效和灵活。然而,尽管这些工具和框架提供了强大的功能,但在实际开发中仍然会遇到各种样式和布局的问题。本文将结合Vite、Vue3和Less,详细介绍在页面开发中常见的样式和布局问题,并提供解决方案和最佳实践
推客系统小程序机构版开发上线全攻略(2025年最新版)
vx_qutudy
推客小程序 推客系统开发 推客系统源码
一、开发前准备:筑牢基础,合规先行1.1注册与认证账号注册:登录微信公众平台注册小程序账号,选择“机构版”类型,获取唯一AppID。资质认证:基础资质:企业营业执照、法人身份证、对公账户信息。特殊资质:涉及支付功能:需办理《增值电信业务经营许可证》(ICP证)。涉及教育/医疗内容:需《互联网信息服务许可证》或相关行业资质。1.2技术选型:高效与扩展并重模块推荐方案前端框架微信原生框架(WXML+W
网络安全第14集
不灭锦鲤
web安全 安全
前言:小迪安全14集,这集重点内容:0、什么是js渗透测试?在javascript中也存在变量和函数,存在可控变量和函数就有可能存在在漏洞,js开发的web应用和php、java开发的区别是,js能看得到的源代码,php看不到,但是风险就是未授权访问、配置信息泄露(加密算法、key秘钥等),源代码看得到,存在更多的url泄露,从而可能会出现未授权访问,从url,前提:web应用可以采用前端语言或后
怎么判断一个DAPP是否真正去中心化
判断一个DAPP(去中心化应用)是否真正去中心化,需要从多个维度进行考察。以下是关键评估标准:1.区块链依赖程度✅真正去中心化:核心逻辑和数据处理完全依赖智能合约,运行在区块链上(如以太坊、Solana等)。❌伪去中心化:依赖中心化服务器处理关键数据或业务逻辑,仅前端去中心化。2.智能合约控制权✅去中心化:合约代码开源,无管理员密钥(adminkey)或可升级后门,治理由DAO(去中心化自治组织)
Web前端交互利用Python跟大模型操作
哥本哈士奇
前端 交互 python
Web前端交互利用Python跟大模型操作一个简单的演示,如何把大模型应用集成到自己的应用场景当中。这里的场景我们模拟的是在吃鸡游戏中,一个作战计划,是否符合老六的行为规范。吃鸡游戏已经风靡很多年,游戏里每个人的游戏风格都不一样,有喜欢钢枪的,有喜欢随机应变的,也有喜欢当老六苟分的。每种风格的游戏方式以及游戏里的行为都不同,所以这里将演示如何应用大模型,去判断一个人的游戏方式,是否符合一个老六的行
尚硅谷微服务尚医通前端npm报错
尚硅谷微服务尚医通前端npm报错血泪史我的版本的8.0.0,弹幕里说降级npm到6.多就能安装,经过许久挣扎还是各种报错,最后通过一下办法解决解决办法:不需要降低npm版本,办法如下这里需要使用到cnpm:1.导入下载好到的项目2.安装cnpm:npminstallcnpm-g3.安装node-sass:cnpminstallnode-sass4.继续安装:cnpminode-sass-D5.删除
Layui核心语法快速入门指南
bemyrunningdog
layui 前端 javascript 开发语言
Layui基本语法学习指南Layui是一个经典的模块化前端框架,以其轻量易用、组件丰富著称。以下是Layui的核心语法结构和使用方法:一、模块加载机制(核心基础)//标准模块加载语法layui.use(['module1','module2'],function(){//回调函数中获取模块varmod1=layui.module1;varmod2=layui.module2;//模块功能调用mod
前端基础知识Vue3系列 - 04(Vue3.0 所采用的 Composition Api 与 Vue2.x 使用的 Options Api 有什么不同)
开始之前CompositionAPI可以说是Vue3的最大特点,那么为什么要推出CompositionApi,解决了什么问题?通常使用Vue2开发的项目,普遍会存在以下问题:代码的可读性随着组件变大而变差每一种代码复用的方式,都存在缺点TypeScript支持有限以上通过使用CompositionApi都能迎刃而解正文一、OptionsApiOptionsAPI,即大家常说的选项API,即以vue
Vue 工程化开发入门
dawn191228
前端学习 vue.js 前端 javascript 前端框架
文章目录一、Vue工程化开发概述二、Vue脚手架三、项目运行流程四、组件化开发五、组件注册六、总结在当今的前端开发领域,Vue.js以其简洁、高效的特性受到了广泛的欢迎。Vue的工程化开发能够帮助我们更好地组织和管理项目,提高开发效率和代码质量。本文将带你了解Vue工程化开发入门知识,包括脚手架、项目运行流程、组件化以及组件注册。一、Vue工程化开发概述工程化开发是一种将软件开发过程规范化、标准化
Python,C++,go语言开发社会犯罪人群回归社会跟踪与辅助管理APP
Geeker-2025
python c++ golang
开发一款用于**社会犯罪人群回归社会跟踪与辅助管理**的App,结合Python、C++和Go语言的优势,可以实现高效的数据处理、实时的跟踪监控以及用户友好的前端界面。以下是一个详细的开发方案,涵盖技术选型、功能模块、开发步骤等内容。##技术选型###后端(Python+Go)-**编程语言**:-**Python**:用于数据处理、机器学习(如风险评估、行为预测)、脚本编写等。-**Go**:用
LeetCode[Math] - #66 Plus One
Cwind
java LeetCode 题解 Algorithm Math
原题链接:#66 Plus One
要求:
给定一个用数字数组表示的非负整数,如num1 = {1, 2, 3, 9}, num2 = {9, 9}等,给这个数加上1。
注意:
1. 数字的较高位存在数组的头上,即num1表示数字1239
2. 每一位(数组中的每个元素)的取值范围为0~9
难度:简单
分析:
题目比较简单,只须从数组
JQuery中$.ajax()方法参数详解
AILIKES
JavaScript jsonp jquery Ajax json
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。
type: 要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和 delete也可以使用,但仅部分浏览器支持。
timeout: 要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局
JConsole & JVisualVM远程监视Webphere服务器JVM
Kai_Ge
JVisualVM JConsole Webphere
JConsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。我们可以根据这些信息判断程序是否有内存泄漏问题。
使用JConsole工具来分析WAS的JVM问题,需要进行相关的配置。
首先我们看WAS服务器端的配置.
1、登录was控制台https://10.4.119.18
自定义annotation
120153216
annotation
Java annotation 自定义注释@interface的用法 一、什么是注释
说起注释,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE5.0中提供的注释就是java源代码的元数据,也就是说注释是描述java源
CentOS 5/6.X 使用 EPEL YUM源
2002wmj
centos
CentOS 6.X 安装使用EPEL YUM源1. 查看操作系统版本[root@node1 ~]# uname -a Linux node1.test.com 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [root@node1 ~]#
在SQLSERVER中查找缺失和无用的索引SQL
357029540
SQL Server
--缺失的索引
SELECT avg_total_user_cost * avg_user_impact * ( user_scans + user_seeks ) AS PossibleImprovement ,
last_user_seek ,
 
Spring3 MVC 笔记(二) —json+rest优化
7454103
Spring3 MVC
接上次的 spring mvc 注解的一些详细信息!
其实也是一些个人的学习笔记 呵呵!
替换“\”的时候报错Unexpected internal error near index 1 \ ^
adminjun
java “\替换”
发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘...
在拆分字符串时遇到通过 \ 来拆分,可是用所以想通过转义 \\ 来拆分的时候会报异常
public class Main {
/*
POJ 1035 Spell checker(哈希表)
aijuans
暴力求解--哈希表
/*
题意:输入字典,然后输入单词,判断字典中是否出现过该单词,或者是否进行删除、添加、替换操作,如果是,则输出对应的字典中的单词
要求按照输入时候的排名输出
题解:建立两个哈希表。一个存储字典和输入字典中单词的排名,一个进行最后输出的判重
*/
#include <iostream>
//#define
using namespace std;
const int HASH =
通过原型实现javascript Array的去重、最大值和最小值
ayaoxinchao
JavaScript array prototype
用原型函数(prototype)可以定义一些很方便的自定义函数,实现各种自定义功能。本次主要是实现了Array的去重、获取最大值和最小值。
实现代码如下:
<script type="text/javascript">
Array.prototype.unique = function() {
var a = {};
var le
UIWebView实现https双向认证请求
bewithme
UIWebView https Objective-C
什么是HTTPS双向认证我已在先前的博文 ASIHTTPRequest实现https双向认证请求
中有讲述,不理解的读者可以先复习一下。本文是用UIWebView来实现对需要客户端证书验证的服务请求,网上有些文章中有涉及到此内容,但都只言片语,没有讲完全,更没有完整的代码,让人困扰不已。但是此知
NoSQL数据库之Redis数据库管理(Redis高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
bijian1013
redis 数据库 NoSQL
3.事务处理
Redis对事务的支持目前不比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中
各数据库分页sql备忘
bingyingao
oracle sql 分页
ORACLE
下面这个效率很低
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_FS_RETURN order by id desc) A ) WHERE RN <20;
下面这个效率很高
SELECT A.*, ROWNUM RN FROM (SELECT * FROM IPAY_RCD_
【Scala七】Scala核心一:函数
bit1129
scala
1. 如果函数体只有一行代码,则可以不用写{},比如
def print(x: Int) = println(x)
一行上的多条语句用分号隔开,则只有第一句属于方法体,例如
def printWithValue(x: Int) : String= println(x); "ABC"
上面的代码报错,因为,printWithValue的方法
了解GHC的factorial编译过程
bookjovi
haskell
GHC相对其他主流语言的编译器或解释器还是比较复杂的,一部分原因是haskell本身的设计就不易于实现compiler,如lazy特性,static typed,类型推导等。
关于GHC的内部实现有篇文章说的挺好,这里,文中在RTS一节中详细说了haskell的concurrent实现,里面提到了green thread,如果熟悉Go语言的话就会发现,ghc的concurrent实现和Go有点类
Java-Collections Framework学习与总结-LinkedHashMap
BrokenDreams
LinkedHashMap
前面总结了java.util.HashMap,了解了其内部由散列表实现,每个桶内是一个单向链表。那有没有双向链表的实现呢?双向链表的实现会具备什么特性呢?来看一下HashMap的一个子类——java.util.LinkedHashMap。
读《研磨设计模式》-代码笔记-抽象工厂模式-Abstract Factory
bylijinnan
abstract
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
package design.pattern;
/*
* Abstract Factory Pattern
* 抽象工厂模式的目的是:
* 通过在抽象工厂里面定义一组产品接口,方便地切换“产品簇”
* 这些接口是相关或者相依赖的
压暗面部高光
cherishLC
PS
方法一、压暗高光&重新着色
当皮肤很油又使用闪光灯时,很容易在面部形成高光区域。
下面讲一下我今天处理高光区域的心得:
皮肤可以分为纹理和色彩两个属性。其中纹理主要由亮度通道(Lab模式的L通道)决定,色彩则由a、b通道确定。
处理思路为在保持高光区域纹理的情况下,对高光区域着色。具体步骤为:降低高光区域的整体的亮度,再进行着色。
如果想简化步骤,可以只进行着色(参看下面的步骤1
Java VisualVM监控远程JVM
crabdave
visualvm
Java VisualVM监控远程JVM
JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到界面
通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
 
Saiku去掉登录模块
daizj
saiku 登录 olap BI
1、修改applicationContext-saiku-webapp.xml
<security:intercept-url pattern="/rest/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<security:intercept-url pattern=&qu
浅析 Flex中的Focus
dsjt
html Flex Flash
关键字:focus、 setFocus、 IFocusManager、KeyboardEvent
焦点、设置焦点、获得焦点、键盘事件
一、无焦点的困扰——组件监听不到键盘事件
原因:只有获得焦点的组件(确切说是InteractiveObject)才能监听到键盘事件的目标阶段;键盘事件(flash.events.KeyboardEvent)参与冒泡阶段,所以焦点组件的父项(以及它爸
Yii全局函数使用
dcj3sjt126com
yii
由于YII致力于完美的整合第三方库,它并没有定义任何全局函数。yii中的每一个应用都需要全类别和对象范围。例如,Yii::app()->user;Yii::app()->params['name'];等等。我们可以自行设定全局函数,使得代码看起来更加简洁易用。(原文地址)
我们可以保存在globals.php在protected目录下。然后,在入口脚本index.php的,我们包括在
设计模式之单例模式二(解决无序写入的问题)
come_for_dream
单例模式 volatile 乱序执行 双重检验锁
在上篇文章中我们使用了双重检验锁的方式避免懒汉式单例模式下由于多线程造成的实例被多次创建的问题,但是因为由于JVM为了使得处理器内部的运算单元能充分利用,处理器可能会对输入代码进行乱序执行(Out Of Order Execute)优化,处理器会在计算之后将乱序执行的结果进行重组,保证该
程序员从初级到高级的蜕变
gcq511120594
框架 工作 PHP android html5
软件开发是一个奇怪的行业,市场远远供不应求。这是一个已经存在多年的问题,而且随着时间的流逝,愈演愈烈。
我们严重缺乏能够满足需求的人才。这个行业相当年轻。大多数软件项目是失败的。几乎所有的项目都会超出预算。我们解决问题的最佳指导方针可以归结为——“用一些通用方法去解决问题,当然这些方法常常不管用,于是,唯一能做的就是不断地尝试,逐个看看是否奏效”。
现在我们把淫浸代码时间超过3年的开发人员称为
Reverse Linked List
hcx2013
list
Reverse a singly linked list.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
p
Spring4.1新特性——数据库集成测试
jinnianshilongnian
spring 4.1
目录
Spring4.1新特性——综述
Spring4.1新特性——Spring核心部分及其他
Spring4.1新特性——Spring缓存框架增强
Spring4.1新特性——异步调用和事件机制的异常处理
Spring4.1新特性——数据库集成测试脚本初始化
Spring4.1新特性——Spring MVC增强
Spring4.1新特性——页面自动化测试框架Spring MVC T
C# Ajax上传图片同时生成微缩图(附Demo)
liyonghui160com
1.Ajax无刷新上传图片,详情请阅我的这篇文章。(jquery + c# ashx)
2.C#位图处理 System.Drawing。
3.最新demo支持IE7,IE8,Fir
Java list三种遍历方法性能比较
pda158
java
从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便测试各种遍历方法的性能,测试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象,测试代码例如以下:
package com.hisense.tiger.list;
import java.util.ArrayList;
import java.util.Iterator;
300个涵盖IT各方面的免费资源(上)——商业与市场篇
shoothao
seo 商业与市场 IT资源 免费资源
A.网站模板+logo+服务器主机+发票生成
HTML5 UP:响应式的HTML5和CSS3网站模板。
Bootswatch:免费的Bootstrap主题。
Templated:收集了845个免费的CSS和HTML5网站模板。
Wordpress.org|Wordpress.com:可免费创建你的新网站。
Strikingly:关注领域中免费无限的移动优
localStorage、sessionStorage
uule
localStorage
W3School 例子
HTML5 提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不