JavaScript:基礎知識

JavaScript基礎知識

1、標籤組使用

charset=’utf-8’ //設置字元集

defet //使腳本延遲到文檔解析完成,Browser已忽略

language=’javascript’ //設置語言,已廢棄

src=’url’ //引用外部檔,可選

type=’text/javascript’ //必選,language替代品

>代碼

列印JavaScript結尾符(外部引用可直接打)’);

src引用JS後,不要在之間加任何語句

2、判斷是否支持JavaScript

3、JavaScriptの核心是ECMAScript

首字母必須是字母、_$

其他字母可是字母、_$或數字

不可使用關鍵字、保留字、truefalsenull

4、注釋

單行: //語句或文字

多行: /*

語句或文字

*/

多行美觀版: /*

*語句或文字

*/

5、數據類型

undefinedBooleanstringnumberobject(null)function

初始化:

var box=’’; //字串初始化

var box=0; //數值初始化

var box=false; //布爾值初始化

6、Boolean

每個類型の值都有對應的Boolean

Stringの非空為真,空為假

Numberの非零為真,0為假

Objectの非null為真,null為假

undefined為假,其餘為真

7、Number類型

浮點型範圍:Number.MIN_VALUENumber.MAX_VALUE

正無窮:Number.POSITIVE_INFINITY

負無窮:Number.NEGATIVE_INFINITY

是否超範圍:isFinite()

NaNNot a Number(非數值)

如:0/012/0*0

是否NaN類型:isNaN()

NaNの類型:Number.NaNNaN+1

Number()將非數值轉換成數值型

Number(‘’) //0

Number(null) //0

Number(false) //0

Number(true) //1

Number(undefined) //NaN

Number(‘345’) //345

Number(032) //26 八進制

Number(‘032’) //32

Number(‘08.90’) //8.9

Number(‘12A21’) //NaN

parseInt()把字串轉為字元型

parseInt(‘34M’) //34

parseInt(‘M51’) //NaN

parseInt(‘3M2’) //3

parseInt(‘12.34’) //12

parseInt(‘’) //NaN

parseInt(‘0xAF’) //175 十六進制

parseInt(‘070’) //56 八進制

第二個參數用於解決進制問題

parseInt(‘AF’,16) //175

parseInt(‘70’,8) //56

parseInt(‘1010’,2) //10

parseFloat()string型轉為float型,不可識別十六/八進制

parseFloat(‘123M’) //123

parseFloat(‘0xA’) //0

parseFloat(‘123.4.5’) //123.4

parseFloat(‘012.300’) //12.3

parseFloat(‘1.2e3’) //1200

8、轉義字元

\n:換行 \t:製錶 \’:’ \r:回車 \xnn:十六進制のASCII

\\\ \b:空格 \”:” \f:換頁 \unnnUnicode值の符號

ASCII對應の十六進制 eg\x2B+

String.fromCharCode(2B); //+,返回ASCII值對應的字元

0-930-39 A-Z41-5A a-z61-7A

Unicode值與對應の字元

6EE1:滿 6eff:滿 5B5D:孝 96EA:雪 306e:の 9ed1:黑

51ac:冬 6f2B:漫 85CF:藏 85e4:藤 98C4:飄 51B0:冰

toString()將值轉換成字串

var box=10;

box.toString(); //10,默認

box.toString(2); //1010,二進制

box.toString(8); //12,八進制

box.toString(16); //a,十六進制

若不知是否為nullundefined(toString()不可轉此二者),可用string()轉換

String(null); //null

String(undefined); //undefined

age=++box; //box+1,再將值賦給age

age=box++; //先將值賦給age,再box+1

age=--box; //box-1,再將值賦給age

age=box--; //先將值賦給age,再box-1

---+++對數值字串有隱形轉換類型功能

false轉為0true轉為1

+box:取正 -box:取負

加法の特殊:

1+’’;//1 1+NaN;//NaN 1+2; //3 Infinity+Infinity;//Infinity -Infinity+Infinity;//NaN

100+’100’;//100100 ‘abc’+10+20;//abc1020 10+20+’abc’;30abc ‘abc’+(10+20);//abc30

特殊の運算:var box={}; box=12+box; //boxstring

減法の特殊:Infinity-Infinity;//NaN 100-’Lee’;//NaN 100-’70’;//30

乘法の特殊:100*’’;//0 10*null;//0 100*NaN;//NaN 100*true;//100 100*’Lee’;//NaN

除法の特殊:100/’’;//Infinity 100/’Lee’;//NaN Infinity/-Infinity;//NaN

求餘の特殊:100%null;//NaN 100%’Lee’;//NaN Infinity%Infinity;//NaN 100%true;//0

9、關係運算符

規則: ①若皆為數值,則比較

②若皆為字串,則比較首字元のASCII碼值

③首為數字,則轉為數進行比較

false轉為0true轉為1

nullundefined相等

NaN與任何值都不相等(含其自身)

{}=={} //false,比較的是他們の地址

undefined==0;  null==0; //false

符號: ===(恆等)!===(非恆等) 在此比較上,nullundefined不會轉為0’’會轉為0

邏輯運算符:&&()||()!()

與(&&)的規則是:

第一項的Boolean值為false,則返回第一項的值

第一項的Boolean值為true,則返回第二項的值

簡記:一假返一,一真返二

與:一假為假,全真為真

或(||)的規則是:

第一項的Boolean值為true,則返回第一項的值

第一項的Boolean值為false,則返回第二項的值

簡記:一真返一,一假返二

或:一真為真,全假為假

非(!)的規則是:

false:非空字元串、非零數值(Infinity)、對象

true0NaNnullundefined、空字元串

Boolean()!!の結果一樣

10、判斷語句

a?b:c; //atrue則執行b,否則執行c

IF單句:if (條件) 語句;

IF復合語句:條件轉為Boolean類型進行判斷

if (條件){

語句;

}else{

語句;

}

或 if (條件){

語句;

}

IF分支語句:

if (條件){

語句;

}else if{

語句;

}

switch語句:break; 退出全循環 coutinue; 退出本次循環

switch(變量){

case :

語句;

break;

default :

語句;

break;

}

do while語句:先執行一次再判斷

do{

語句;

} while (判斷語句);

while語句:先判斷再執行語句

while (判斷語句){

語句;

}

for語句:順序:先聲明,再判斷,三語句1,四語句2

for(聲明變量; 判斷; 語句2 ){

語句1;

}

for in語句:

for (var p in 對象){

語句;

}

with語句:將作用域設置到同一個對象中

var n=box.name; var a=box.age; var h=box.height;

等價於:with(box){

var n=name; var a=age; var h=height;

}

11、函數:

構造函數: function 函數名 (參數1,參數2……){

語句;

return 對象/; //return還有一共能就是退出函數,即return之後の語句不再執行

}

動態用參: function box() {

if (arguments.length==0) return 對象/;

for (var i=0; i

語句;

return 對象/;

}

}

創建方法: var man= new box(); ( new可省略,即var man= box(); ) var man=box;

調用方法: manman();

運行方法: man()man()();

對象(屬性)賦值: box.name=’man’;

var box={

name=’man’,

……

}

給對象(屬性)創建方法: var box={

name : ‘man’,

run : function(){}

}

刪除對象:delete box.name;

空對象:var box={};

匿名對象:box({});

function調用:function box(obj){

if (obj.name!==undefined)語句;

}

13、數組

數組中可以是對象、字串、數值、數組等也可混用;

創建數組: var box=new Array();

var box=new Array(10); //new 可省略

var box=(‘man’,28,’華人’)

字面量法:

var box=[];

var box=[‘Man’,28,’華人’]

屬性: box.lenght; //獲取元素個數

box.lenght=10; //設置元素個數

box[box.lenght]=’js’; //給數組尾部加一個元素

堆棧: push()pop() 後進先出

box.push(‘Man’); //數組尾部添加一元素,並返回新長度

box.unshift(‘xiao’,4) //數組頭部添加倆元素,並返回新長度

box.pop(); //移出最後一元素,並返回移出的元素

box.shift(); //移除數組頭部的元素,並返回移除的元素

box.join(‘|’); //返回用|分開的字串

box.reverse(); //逆向排序,並將結果返給原數組

box.sort(); //從小到大排序(依字串法,即2>10),結果返給原數組

基於當前數組建立新數組

var box2=box.concat(‘man’); //創建新數組並添加元素

box.slice(1); //boxの第2個元素開始取,剩下の全取

box.slice(1,2); //box1元素到第2個元素,且將取出的元素從原數組中刪除

box.splice(0,2) //box1元素開始取2個元素

box.splice(1,0,’a’,’man’) //box1個元素後截取0個,插入2個(插入)

box.splice(1,1,100) //box1個元素後截取1個,插入1個(替換)

14、日期對象

創建:var date=new Date(); //返回類型:Mon Jun 13 2011 00:00:00 GMT+0800

Date()中可接收の類型:除Date.parse()Date.UTC()所支持の類型,還可接收毫秒數和

方法: Date.parse(); //接收一表示日期の字串,並返回毫秒數

可接收の類型:6/3/2011May 25,2004Tue May 25 2004 00:23:22 GMT-070

Date.UTC(,,,,,,毫秒) //前二者必須,返回毫秒數

月份為0-11,此日期為0時區,若在中國,會自動加上8h

格式化:date.toString(); //Thu Nov 15 2006 17:22:32 GMT+8

date.toLocaleString(); //2007-11-23 14:22:33

date.valueOf(); //返回毫秒數

date.toDateString(); //以特定的格式顯示星期幾、月、日和年

date.toTimeString(); //以特定的格式顯示時、分、秒和時區

date.toLocaleDateString(); //以特定地區格式顯示星期幾、月、日和年

date.toLocaleTimeString(); //以特定的格式顯示時、分、秒和時區

date.toUTCString(); //以特定的格式顯示完整的 UTC 日期

組件方法:

box.getTime(); //獲取日期的毫秒數,和 valueOf()返回一致

box.setTime(100); //以毫秒數設置日期,會改變整個日期

box.getFullYear(); //獲取四位年份

box.setFullYear(2012); //設置四位年份,返回的是毫秒數

box.getMonth(); //獲取月份,沒指定月份,從 0 開始算起

box.setMonth(11); //設置月份

box.getDate(); //獲取日期

box.setDate(8); //設置日期,返回毫秒數

box.getDay(); //返回星期幾,0 表示星期日,6 表示星期六

box.setDay(2); //設置星期幾

box.getHours(); //返回時

box.setHours(12); //設置時

box.getMinutes(); //返回分鐘

box.setMinutes(22); //設置分鐘

box.getSeconds(); //返回秒數

box.setSeconds(44); //設置秒數

box.getMilliseconds(); //返回毫秒數

box.setMilliseconds(); //設置毫秒數

box.getTimezoneOffset(); //返回本地時間和 UTC 時間相差的分鐘數,除此外,其他都有UTC功能,即中國のgetHoursgetUTCHours相差8小時

15、正則表達式

創建: var box=new RegExp(‘box’ , ’ig’) //i:忽略大小寫;g:全局匹配;m:多行匹配

var box=/box/ig;

var box=new RegExp(‘box’);

var box=/box/;

檢測與替換:/box/i.test(‘This is a Box!’); //一句話法

box.test(str); //判斷str中是否有box,有返true

box.exec(str); //判斷str中是否有box,有返數組,無返null

str.match(box); //判斷str中是否有box,有返數組,無返null

str.search(box); //判斷str中是否有box返回第一個匹配位置

str.replace(box,’tom’) //str中匹配的box替換為tom開啟全局模式,全換

str.split(box) //str中匹配的box作為分割符生成一數組

靜態屬性: 屬性 : 短名 : 含義

input : $_ : 被匹配的字串

lastMarth : $& : 最有一個被匹配的字串

lastParen : $+ : 最後一對()匹配的字串

leftContext : $` : 最後一次匹配的字串

rightContext : $’ : 上次匹配之後的字串

multiline : $* : 所有表達式都用於多行布爾值

用法: box.test(str); //先執行一下

RegExp.input; //此為靜態屬性,輸出被匹配額字串,RegExp為靜態量

RegExp.[‘$_’] //第二種寫法

另注:input比較特殊,還有一種寫法:RegExp.$_,但是其他不可這麼用

實例屬性:

global:是否設置全局屬性,同g

ignoreCase:是否設置忽略大小寫,同i

multiline:是否支持換行,同m

source:正則表達式要匹配的字串

用法: var pattern = /google/ig; //需要先預先聲明

alert(pattern.global); //

這些實例屬性基本沒什麼用。並且 lastIndex 在獲取下次匹配位置上 IE 和其他流覽器有偏差,

主要表現在非全局匹配上。lastIndex 還支持手動設置,直接賦值操作。

特殊字元:

. //匹配除換行符外的任意字元

[a-z0-9] //匹配括弧中的字元集中的任意字元

[^a-z0-9] //匹配任意不在括弧中的字元集中的字元

\d //匹配數字

\D //匹配非數字,同[^0-9]相同

\w //匹配字母和數字及_

\W //匹配非字母和數字及_

\0 //匹配 null 字元

\b //匹配空格字元

\f //匹配進紙字元

\n //匹配換行符

\r //匹配回車字元

\t //匹配跳位字元

\s //匹配空白字元、空格、跳位字元和換行符

\S //匹配非空白字元

^ //行首匹配

$ //行尾匹配

\A //只有匹配字串開始處

\b //匹配單詞邊界,詞在[]內時無效

\B //匹配非單詞邊界

\G //匹配當前搜索的開始位置

\Z //匹配字串結束處或行尾

\z //只匹配字串結束處

x? //匹配 0 個或 1 x

x* //匹配 0 個或任意多個 x

x+ //匹配至少一個 x

(xyz)+ //匹配至少一個(xyz)

x{m,n} //匹配最少 m 個、最多 n x

this|where|logo //匹配 this或where或logo中任意一個

(string) //用於反向引用的分組

\1 $1 //匹配第一個分組中的內容

\2 $2 //匹配第二個分組中的內容

\3 $3 //匹配第三個分組中的內容

捕獲性分組和非捕獲性分組

var str = '123abc'; var pattern = /(\d+)([a-z])/; //捕獲性分組,即普通分組

alert(pattern.exec(str));

var str = '123abc'; var pattern = /(\d+)(?:[a-z])/; //非捕獲性分組,即不獲取其分組,標誌就是?:

alert(pattern.exec(str)); //返回123a123;不返回a

使用分組嵌套

var str = 'ABC'; var pattern = /(A?(B?(C?)))/; //從外往內獲取

alert(pattern.exec(str)); //返回ABC , ABC , BC , C

使用前瞻捕獲

var str = 'google'; var pattern = /(goo(?=gle))/; //goo 後面必須跟著 gle 才能捕獲

alert(pattern.exec(str));

使用特殊字元匹配

var str = '.[/b]'; var pattern = /\.\[\/b\]/; //特殊字元,用\符號轉義即可

alert(pattern.test(str));

使用換行模式

var str = '1.baidu\n2.google\n3.bing'; var pattern = /^\d+/mg; //啟用了換行模式

var result = str.replace(pattern, '#'); alert(result);

常用の正則運算式

郵遞區號:/[1-9][0-9]{5}/) //6 位數字,第一位不能為 0

郵箱地址:/^([\w\.\-])+@([\w\.\-]+)\.([a-zA-Z]{2,5})$/

檔壓縮包:/[\w]+\.zip|rar|gz/ //\d\w_表示所有數字和字母加下劃線

刪除多餘空格:str.replace(/\s/g,''); //g 必須全局,才能全部匹把空格匹配成無空格

刪除首空格:str.replace( /^\s+/, '');

刪除尾空格:str.replace(/\s+$/, '');

刪除首尾空格:str.replace(/^\s*(.+?)\s*$/);

替換用法:

pattern.exec(str)[1];

str.replace(pattern,’$1’)

16、function類型

變數聲明:

1.普通的函數聲明

function box(num1, num2) {return num1+ num2;}

2.使用變數初始化函數

var box= function(num1, num2) {return num1 + num2;};

3.使用 Function 構造函數

var box= new Function('num1', 'num2' ,'return num1 + num2');

function內部自身調用

arguments.callee()

this代表作用域,全局模式下為window

匿名函數沒有自身域,他のthis代表父層

實名函數的作用域為傳遞來的參數對象的

box.length //獲取參數個數

作用域改變:不傳參數,boxapply用法相同,區別只在傳參

box.call(dog); //boxの作用域放在dog

box.apply(this); //boxの作用域放在上一層域內

box.call(); //同上,

box.call(window); //boxの作用域放在window

box.apply(dog,num1,num2) //n1n2傳入到box中,在dog域內使用相當於dog{box(n1,n2);}

box.call(dog,[num1,num2]) //同上

17、變數、作用域及記憶體

基本類型(複製の都是值):undefinednullBooleannumberstring

引用類型(複製の都是地址):object

JavaScriptfunction參數不會按引用傳遞,都是按值傳遞。

引用類型檢測:instanceof

如:box instanceof Array

類型名:ArrayObjectRegExpString

作用域:

局部環境中の變數在環境被銷毀後隨之銷毀

全局變數在執行完程式或網頁被關閉才被銷毀

局部變數編程全局變數,省略var即可,即直接賦值

變數查詢中,訪問局部變數要比全局變數更快,因為不需要向上搜索,當局部變數不存在時,會向父層搜索。

JavaScriptの記憶體垃圾搜集器週期性的自動運行。

解除引用,等待回收(內置變數不可解除):box=null;

18、三類特殊引用類型

使用new定義的BooleanStringNumber三中類型可以為自己添加屬性和方法。

字面量法定義則不可添加屬性和方法,但此二法皆可用內置方法。

不建議使用new添加屬性和方法。

比如:var box = new String('Mr. Lee'); //new 運算符

box.name = 'Lee'; //自定義屬性

box.age = function () {}; //自定義方法

Numberの靜態方法(直接用Number加屬性)

Number.MAX_VALUE //表示最大數

Number.MIN_VALUE //表示最小值

Number.NaN //非數值

Number.NEGATIVE_INFINITY //負無窮大,溢出返回該值

Number.POSITIVE_INFINITY //無窮大,溢出返回該值

Number.prototype //原型,用於增加新屬性和方法

Number對象の方法(var a=123 ; a.toString();

toString() //將數值轉化為字串,並且可以轉換進制

toLocaleString() //根據本地數字格式轉換為字串

toFixed() //將數字保留小數點後指定位數並轉化為字串

toExponential() //將數字以指數形式表示,保留小數點後指定位數並轉化為字串

toPrecision() //指數形式或點形式表述數,保留小數點後面指定位數並轉化為字串

用法:var num=123; num.toFixed(2);

String對象の方法與屬性(var a=’China’ ; a.length;

length //返回字串的字元長度

constructor //返回創建 String 對象的函數

prototype //通過添加屬性和方法擴展字串定義

charAt(n) //返回指定索引位置的字元

charCodeAt(n) //Unicode 編碼形式返回指定索引位置的字元

concat(str1,str2) //將字串參數串聯到調用該方法的字串

slice(n,m) //返回字串 n m 之間位置的字串

substring(n,m) //同上

substr(n,m) //返回字串 n 開始的 m 個字串

slice(n)substring(n)substr(n) //n為正數,三者功能相同,從n為開始之後全返

slice(n)substr(n) //n為負數,此二者功能相同,返回總長度與n之和,開始之後の所有字串

substring(n) //n為負數,全返

slice(-a,-b) //若其長為l,等價於slice(l-a , l-b),若l-b,則什麼都不返

substring(a,b) //b為負數等價於substring(0,a),皆為負數等價於substring(0 , 0),則無值

substr(a,-b) //等價於substr(a,0),啥也不取

substr(-a,b) //等價於substr(l-a,b),若l-a大於b,則無值

indexOf(str) //從頭搜索str,並返回查找到的第一個索引,若無返回-1

indexOf(str , n) //從第n個字元後搜索,並返回查找到的第一個索引,若無返回-1

lastIndexOf(str) //從尾部搜索str,並返回查找到的第一個索引,若無返回-1

lastIndexOf(str,n) //從倒數第n個字元前搜索,並返回查找到的第一個索引,若無返回-1

toLowerCase() //轉為全小寫

toUpperCase() //轉為全大寫

toLocaleLowerCase() //將字串全部轉換為小寫,並且本地化

toLocaleUpperCase() //將字串全部轉換為大寫,並且本地化

split(str) //str作為分隔符號,把字串轉為數組

match(str) //在字串中查找str,找到返回str,否則null

replace(s1,s2) //把字串s1替換成s2

search(str) //在字串中查找str,並返回索引,若無返回-1

localeCompare(str) //比較與strの大小,返回值:1(str首字母大)0-1

19、HTMLの方法(添上HTML標籤,var b=’box’;b.anchor(‘china’);//box

anchor(name) //str

big() //str

blink() //str

bold() //Str

fixed() //Str

fontcolor(color) //str

fontsize(size) //str

link(URL) //str

small() //str

strike() //str

italics() //italics

sub() //str

sup() //str

20、UTF-8編碼與解碼

encodeURI(str); //除特殊字元與英文外都編碼

encodeURIComponent(str); //除英文外都編碼(常用)

decodeURI(str); //解碼encodeURIの編碼

decodeURIComponent(str); //解碼encodeURIComponentの解碼

eval(str) //str解析為JavaScript語句

eval()使用時一定要注意安全,防範代碼注入

21、Mathの常量

Math.E //自然對數的底數,即常量 e 的值

Math.LN10 //10的自然對數,即ln10

Math.LN2 //2的自然對數,即ln2

Math.LOG2E //2為底e的對數,即log2e

Math.LOG10E //10為底 e 的對數,即log10 e

Math.PI //π的值

Math.SQRT1_2 //1/2的平方根

Math.SQRT2 //2的平方根

Math.min(3,8,0,1,3); //最小值

Math.max(1,9,6,0,3,2); //最大值

Math.ceil(25.1); //26,向上進一

Math.floor(25.9); //25,取整

Math.round(25.9); //26,四捨五入

Math.random(); //產生0-1之間の亂數(不含01

Math.abs(n); //返回 n 的絕對值,即|n|

Math.exp(n); //返回 Math.E num 次冪,即en

Math.log(n); //返回 n的自然對數,即logn

Math.pow(n,m); //返回 nm次冪,即nm

Math.sqrt(n); //返回 n的平方根

Math.acos(x); //返回 x 的反余弦值,即arccos(x)

Math.asin(x); //返回 x 的反正弦值,即arcsin(x)

Math.atan(x); //返回 x 的反正切值,即arctan(x)

Math.atan2(y,x); //返回 y/x 的反正切值,即arctan(y/x)

Math.cos(x); //返回 x 的余弦值,即cos(x)

Math.sin(x); //返回 x 的正弦值,即sin(x)

Math.tan(x); //返回 x 的正切值,即tan(x)

產生區間隨機值

Math.floor(Math.random() *總數+首值); //a-b之間,a為首值,b-a+1為總數

22、構造函數

普通函數:

function china(1,2){

return 1+2;

}

工廠模式:即內部賦值,在內部設置屬性,外部互用時不會相互影響。無法搞清楚他們到底是哪個對象的實例

function a(name,age){

var obj = new Object();

obj.name = name;

obj.age = age;

obj.run = function () {

return this.name + this.age + '運行中...';

};

return obj;

};

工廠模式の引用:var b=a(參數1,參數2)

構造函數:

function Box(name, age) {

this.name = name;

this.age = age;

this.run = function () {

return this.name + this.age + '運行中...';

};

}

構造函數命名規範:

1.函數名和實例化構造名相同且大寫,(PS:非強制,但這麼寫有助於區分構造函數和普通函數)

2.通過構造函數創建對象,必須使用 new 運算符。(Box('Lee', 20); //普通模式調用,無效)

工廠模式下引用後的類型都是以object,構造函數引用後的類型都是Box

寄生構造函數:工廠模式+構造函數

function myString(string) {

var str = new String(string);

str.addstring = function () {

return this + ',被添加了!';

};

return str;

}

寄生構造函數の引用:var box=new myString();

穩妥構造函數:不讓用newthisの情況

function Box(name , age) {

var obj = new Object();

obj.run = function () {

return name + age + '運行中...'; //直接列印參數即可

};

return obj;

}

穩妥構造函數的引用:var box=Box();

23、原型:prototype

讓所有對象實例共用他所包含的屬性和方法

不必在構造時定義對象,就可以將信息直接加到原型中

原型模式の執行流程:

1、先查找實例裏の屬性或方法,有則返回

2、若實例中無則去原型中找,有則返回

已存在屬性,想訪問原型中的,需將屬性刪除:delete box1.name

刪除原型屬性:delete Box.prototype.name

判斷屬性是否在實例中:box1.hasOwnProperty(‘name’)

判斷屬性是否可訪問(不分實例、原型)’name’ in box1

判斷對象是否實例化:Box.prototype.isPrototypeOf(box1)

獲取構造函數名(通過實例對象)box1.constructor //返回Box,用此判斷是否為Box的實例對象

原型重寫:將之前的信息全部刪去

Box.prototype={

constructor:Box, //不加此句,則constructorObject

name:’Man’,

}

給原型添加屬性:

Box.prototype.name=’man’;

Box.prototype.age=function(){};

動態原型模式(不用字面量重寫原型)

if (typeof this.run!=’function’){

Box.prototype.run=function(){}

}

 

繼承:

Desk.prototype=new Box(); //box()封裝到Deskの原型中

子類從屬於自身和其父類,但字面量重寫會中斷與原型的關係,子類無法給父類傳遞參數

對象冒充,只能繼承構造裏的信息,不能繼承原型

組合模式:可以解決傳參和繼承原型,但父函數被調用兩次

function Desk(參數){

Box.call(this,參數); //冒充

}

Desk.prototype=new Box(); //繼承

寄生組合繼承:思路:①將父の原型給子の原型②子再冒充父;解決了兩次調用

function create(sun,father){

sun.prototype=father.prototype;

sun.prototype.constructor=sun;

}

function Sun(參數){

Father.call(this,參數)

}

③執行一次:create(Sun,Father)

24、匿名函數和閉包

匿名函數:

匿名函數的自我執行:(匿名函數)();

把匿名函數返給變數:var 變數名=匿名函數;

把匿名函數執行後的返回值給變數:var 變數名=(匿名函數)();

匿名函數的傳參:(function(參數){})();

閉包(內匿):指有權訪問另一個函數作用域中的變數的函數,創建閉包的常見的方式,就是在一個函數內部創建另一個函數,通過另一個函數訪問這個函數的局部變數

function box(){

function(){}

}

調用內匿:var b=box()();

閉包運行時指向window,即閉包的this指向window,改變this有兩種方法:

①冒充(冒充的本意就是改變作用域)

var _this=this;在閉包內用_this,代替this

為了防止記憶體洩漏,應該講變數清除,如 box=null

由於JavaScript沒有塊級作用域,即出了iffor等語句後變數仍有用

解決辦法模仿塊級作用域:即(function(){iffor語句;})(); 匿名函數的變數出匿名函數後就銷毀

私有變數的引用:在function中建立一個匿名函數,在匿名函數內將需要の值返回

對外公共界面(匿名函數):function Box(參數){

this.set=function(參數){}; //對外公共界面

}

全局屬性:採用的是 Box = function () {} 而不是 function Box() {} 因為如果用後面這種,就變成私有函數了,無法在全局訪問到了。

Box = function () {}; //構造方法

Box.prototype.setUser = function (value) {

user = value; //user為靜態屬性,即共用於不同對象中的屬性

}

引用:var box =new Box();

對外公共界面:

return{};或var obj={}; return obj;

增強型:

function Desk() {};

var box = function () {

var desk = new Desk(); //可以實例化特定的對象

desk.go = function () {

return age + run();

};

return desk;

}();

alert(box.go());

25、BOMBrowser Object Mode 流覽器對象

window對象の方法:

強制操作,防止流覽器不認,即在前面加上window

如:window.closed(直接用closed可能不認)

closed //當窗口關閉時為真

defaultStatus=’文本’ //在狀態欄顯示的默認文本

status=’文本’ //在狀態欄顯示文本(臨時)

document //窗口中當前顯示的文檔對象

frames //窗口中的框架對象數組

history //保存有窗口最近加載的 URL

length //窗口中的框架數

location //當前窗口的 URL

name //窗口名

offscreenBuffering //用於繪製新窗口內容並在完成後複製已存在的內容,控制屏幕更新

opener //打開當前窗口的窗口

parent //指向包含另一個窗口的窗口(由框架使用)

screen //顯示屏幕相關信息,如高度、寬度(以像素為單位)

self //指示當前窗口。

top //包含特定窗口的最頂層窗口(由框架使用)

window //指示當前窗口,與 self 等效

windowの方法

confirm(‘提示語’); //有確定和取消,返回值:確定true,取消false

prompt(‘提示語’,’初始值’); //輸入框,返回值為內值

alert(“提示語”); //只有確定

print(); //打印頁面

find(); //調用查找

blur() //將焦點從窗口移除

clearInterval(interval) //清除之前設置的定時器間隔

clearTimeOut(timer) //清除之前設置的超時

close() //關閉窗口

focus() //將焦點移至窗口

open(url,name,[options]) //打開一個新窗口並返回新 window 對象

prompt(text,defaultInput) //創建一個對話框要求用戶輸入信息

scroll(x,y) //在窗口中滾動到一個像素點的位置

setInterval(expression,milliseconds) //經過指定時間間隔計算一個運算式

setInterval(function,millisenconds,[arguments]) //經過指定時間間隔後調用一個函數

setTimeout(expression,milliseconds) //在定時器超過後計算一個運算式

setTimeout(expression,milliseconds,[arguments]) //在定時器超過時後計算一個函數

open(‘url’ [,窗口名稱或窗口目標][,特性字串])

如:open(‘http:\\www.baidu.com’,’百度’,'width=400,height=400,top=200,left=200,toolbar=yes');//百度即窗口名

窗口目標:_parent(本窗口)_blank(新建)

特性字串:可用,分開

width:寬度 height:高度 //此二者不可小於100

top:Y座標 left:X座標 //此二者皆不可為負值

以下字串值為yesNoIE可能支持,其他流覽器不支持。(因為其他流覽器不在支持新建單頁模式)

location:是否顯示地址欄 menubar:是否顯示菜單欄

resizable:是否允許拖動 scrollbars:是否允許滾動條

status:是否顯示狀態欄 toolbar:是否顯示工具欄

fullscreen:是否最大化

opener:表示開啟子窗の父窗

opener.document.write(‘’); //在子窗操作可讓父窗執行

窗口位置:直接用不用加首碼

screenLeftscreenTop;除火狐外都支持

screenXscreenY;全支持

相容寫法:var leftX = (typeof screenLeft == 'number') ? screenLeft : screenX;

var topY = (typeof screenTop == 'number') ? screenTop : screenY;

窗口頁面的4個屬性:(穀歌のinner=outer)

頁面的長寬:innerWidthinnerHeight

頁面+邊框的長寬:outerWidthouterHeight

全相容寫法:

//如果是 Firefox 流覽器,直接使用 innerWidth innerHeight

var width = window.innerWidth;  //這裏要加 window,因為 IE 會無效

var height = window.innerHeight;

if (typeof width != 'number') { //如果是 IE,就使用 document

if (document.compatMode == 'CSS1Compat') {

width = document.documentElement.clientWidth;

height = document.documentElement.clientHeight;

} else {

width = document.body.clientWidth; //IE6非標準模式使用 body

height = document.body.clientHeight;

}

}

調整流覽器位置

moveTo(0,0); //IE 有效,移動到 0,0 座標

moveBy(10,10); //IE 有效,向下和右分別移動 10 像素

調整流覽器大小

resizeTo(200,200); //IE 有效,調正大小

resizeBy(200,200); //IE 有效,擴展收縮大小

超時調用:var time=setTimeout(語句,時間);

取消超時:clearTimeout(time);

間歇調用:var time=setInterval(fn,1000);

取消間歇:clearInterval(time);

location對象の方法:location 對象是 window 對象的屬性,也是 document 對象的屬性;

所以 window.location document.location 等效,用法需在前面加上location

跳到指定頁面:location.assign(‘網址’); //網址需加上http:\\

重新加載: location.reload(); //會不停的加載

location.reload(true); //從服務器加載

不產生歷史記錄的跳轉:location.replace(‘網址’);

location.hash //如果該部分存在,表示獲取錨點部分

location.host //獲取主機名:端口號

location.hostname //獲取主機名

location.href //獲取整個 URL即絕對file:///D:/Windows/APP/AppServ/www/JS/1st.html

location.pathname //獲取路徑名

location.port //獲取端口號

location.protocol //獲取協議部分

slocation.search //獲取查詢字串即URL?之後的字串

以上皆可設置:如location.href =’http://www.baidu.com’ ; 但除protocal外都會自動跳轉

History對象:是 window 對象的屬性,它保存著用戶上網的記錄,從窗口被打開的那一刻算起。

history.length //history 對象中的記錄數

history.back() //前往流覽器歷史條目前一個 URL,類似後退

history.forward() //前往流覽器歷史條目下一個 URL,類似前進

history.go(num) //流覽器在 history 對象中向前或向後,正值前進,負值後退

26、流覽器檢測:

navigator對象:

navigator.appCodeName //流覽器的名稱。通常是Mozilla,即使在非 Mozilla 流覽器中也顯示Mozilla

navigator.appName //完整的流覽器名稱

navigator.appVersion //流覽器的版本。一般不與實際的流覽器版本對應

navigator.cookieEnabled //表示 cookie 是否啟用

navigator.javaEnabled() //表示當前流覽器中是否啟用了Java

navigator.mimeTypes //在流覽器中註冊的 MIME 類型數組

navigator.platform //流覽器所在的系統平臺

navigator.plugins //流覽器中安裝的插件信息的數組

navigator.userAgent //流覽器的用戶代理字串

插件屬性:

navigator.plugins.name //插件名

navigator.plugins.filename //文檔名

navigator.plugins.length //插件個數

navigator.plugins.description //插件的描述

IE插件檢測:

function hasPlugin(name) {

var name = name.toLowerCase();

for (var i = 0; i < navigator.plugins.length; i ++) {

if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {

return true;

}

}

return false;

}

IE控件檢測:

function hasIEPlugin(name) {

try {

new ActiveXObject(name);

return true;

} catch (e) {

return false;

}

}

flash插件檢測:

function hasFlash() {

var result = hasPlugin('Flash');

if (!result) {

result = hasIEPlugin('ShockwaveFlash.ShockwaveFlash');

}

return result;

}

MIME類型:指多用途因特網郵件擴展。它是通過因特網發送郵件消息的標準格式。

navigator.mineTypes[i].type //類型文檔名

navigator.mineTypes[i].description //描述

navigator.mineTypes[i].enablePlugin //引用の類型

navigator.mineTypes[i].suffixes //支持の檔擴展名

27、DOMDocument Object Mode

DOM操作必須等待HTML文檔加載完畢,才能獲取

window.οnlοad=function(){}

通過ID獲取元素節點:

var box=document.getElementById(‘box’);

其下屬性:

box.tagName //獲取節點の標籤名

box.innerHTML //獲取節點中間の純文本+標籤

box.id //ID(可自設)

box.title //title屬性值(可自設)

box.style //style屬性對象(可自設)

box.className //class屬性の名字(可自設)

box.style.color //獲取style屬性中colorの值(可自設)

通過標籤獲取元素

var tag=document.getElementsByTagName(‘a’);

a改為*表示所有標籤

tag.item(0) tag[0]:表示第一個元素

tag.length:表示元素數目

通過name獲取元素

var nm=document.getElementsByName(‘’)

 

box.getAttribute(‘class’); //獲取class屬性

box.setAttribute(‘屬性’,’值’) //設置屬性值

box.removeAttribute(‘class’) //移出屬性值

box.nodeName //tagName,若為文本返回#text,其他則返回名

box.nodeType //元素返回1,屬性返回2,文本返回3

box.nodeValue //元素返回null,屬性返回屬性值,文本返回文本內容

box.bbb //獲取自定義屬性的值

nodeValueinnerHTML的區別

box.innerHTMLbox.childNodes[0].nodeValue等價,即nodeValue只能通過子節點去設置

②賦值不同:box.innerHTML可接收html標籤,而box.nodeValue不接收,會把其按文本輸出

層次節點:

box.childNodes //獲取當前元素節點的所有子節點

box.firstChild //獲取當前元素節點的第一個子節點

box.lastChild //獲取當前元素節點的最後一個子節點

box.ownerDocument //獲取該節點的文檔根節點,相當與 document

box.parentNode //獲取當前節點的父節點

box.previousSibling //獲取當前節點的前一個同級節點

box.nextSibling //獲取當前節點的後一個同級節點

box.attributes //獲取當前元素節點的所有屬性節點集合

box.attributes[0]box.attributes[‘id’] //表示第一個屬性,id表示id的屬性值

box.removeChild(‘’) //移除子節點

DOM操作節點:

document.write() //這個方法可以把任意字串插入到文檔中

document.createElement() //創建一個元素節點

box.appendChild() //將新節點追加到子節點列表的末尾

document.createTextNode() //創建一個檔節點

box.parentNode.insertBefore(p, box); //將新節點p插到box插入在前面

box.parentNode.replaceChild(p,box); //將新節點p替換舊節點box

box.firstChild.cloneNode(true) //複製節點,true把標籤內文本也複製,false只複製標籤

box.parentNode.removeChild(box) //移除節點

28、DOM進階

Node類型:表示所有類型值的統一界面,IE 不支持

Node的常量

常量名 說明 nodeType

ELEMENT_NODE 元素 1

ATTRIBUTE_NODE 屬性 2

TEXT_NODE 文本 3

CDATA_SECTION_NODE CDATA 4

ENTITY_REFERENCE_NODE 實體參考 5

ENTITY_NODE 實體 6

PROCESSING_INSTRUCETION_NODE 處理指令 7

COMMENT_NODE 注釋 8

DOCUMENT_NODE 文檔根  9

DOCUMENT_TYPE_NODE doctype 10

DOCUMENT_FRAGMENT_NODE 文檔片段 11

NOTATION_NODE 符號 12

例如: alert(Node.ELEMENT_NODE); //1,元素節點類型值

alert(Node.TEXT_NODE);   //2,文本節點類型值

document類型;

document; //document

document.nodeType; //9,類型值

document.childNodes[0]; //DocumentType,第一個子節點對象

document.childNodes[0].nodeType; //IE 10IE 8

document.childNodes[1]; //HTMLHtmlElement

document.childNodes[1].nodeName; //HTML

document.documentElement; //HTMLHtmlElement,獲取

document.body; //HTMLBodyElement,獲取

document.doctype; //DocumentType,獲取

document.childNodes[0].nodeName //IE 會是#Comment

//屬性

document.title; //獲取和設置</span><span style="font-family:'宋体';">標籤的值</span></p> <p>document.URL; //<span style="font-family:'宋体';">獲取 </span><span style="font-family:Calibri;">URL </span><span style="font-family:'宋体';">路徑</span></p> <p>document.domain; //<span style="font-family:'宋体';">獲取功能變數名稱,服務器端</span></p> <p>document.referrer; //<span style="font-family:'宋体';">獲取上一個 </span><span style="font-family:Calibri;">URL</span><span style="font-family:'宋体';">,服務器端</span></p> <p>//<span style="font-family:'宋体';">對象集合</span></p> <p>document.anchors; //<span style="font-family:'宋体';">獲取文檔中帶</span><span style="font-family:Calibri;">name</span><span style="font-family:'宋体';">屬性的</span><span style="font-family:Calibri;"><a></span><span style="font-family:'宋体';">元素集合</span></p> <p>document.links; //<span style="font-family:'宋体';">獲取文檔中帶 </span><span style="font-family:Calibri;">href </span><span style="font-family:'宋体';">屬性的</span><span style="font-family:Calibri;"><a></span><span style="font-family:'宋体';">元素集合</span></p> <p>document.applets; //<span style="font-family:'宋体';">獲取文檔中</span><span style="font-family:Calibri;"><applet></span><span style="font-family:'宋体';">元素集合,已不用</span></p> <p>document.forms; //<span style="font-family:'宋体';">獲取文檔中</span><span style="font-family:Calibri;"><form></span><span style="font-family:'宋体';">元素集合</span></p> <p>document.images; //<span style="font-family:'宋体';">獲取文檔中</span><span style="font-family:Calibri;"><img></span><span style="font-family:'宋体';">元素集合</span></p> <p>text<span style="font-family:'宋体';">類型:</span></p> <p>box.normalize(); //box<span style="font-family:'宋体';">為父節點,把</span><span style="font-family:Calibri;">box</span><span style="font-family:'宋体';">所有子節點合併成一個節點</span></p> <p>box.firstChild.splitText(3); //<span style="font-family:'宋体';">把前</span><span style="font-family:Calibri;">3</span><span style="font-family:'宋体';">個分離出來成一個節點</span></p> <p>var box = document.getElementById('box');</p> <p>box.firstChild.deleteData(0,2); //<span style="font-family:'宋体';">刪除從 </span><span style="font-family:Calibri;">0 </span><span style="font-family:'宋体';">位置的 </span><span style="font-family:Calibri;">2 </span><span style="font-family:'宋体';">個字元</span></p> <p>box.firstChild.insertData(0,'Hello.');  //<span style="font-family:'宋体';">從 </span><span style="font-family:Calibri;">0 </span><span style="font-family:'宋体';">位置添加指定字元</span></p> <p>box.firstChild.replaceData(0,2,'Miss'); //<span style="font-family:'宋体';">從 </span><span style="font-family:Calibri;">0 </span><span style="font-family:'宋体';">位置替換掉 </span><span style="font-family:Calibri;">2 </span><span style="font-family:'宋体';">個指定字元</span></p> <p>box.firstChild.substringData(0,2); //<span style="font-family:'宋体';">從 </span><span style="font-family:Calibri;">0 </span><span style="font-family:'宋体';">位置獲取 </span><span style="font-family:Calibri;">2 </span><span style="font-family:'宋体';">個字元,直接輸出</span></p> <p>alert(box.firstChild.nodeValue);  //<span style="font-family:'宋体';">輸出結果</span></p> <p> </p> <p>document.getElementById('box').scrollIntoView(); //<span style="font-family:'宋体';">滾動到可見</span></p> <p>box.children.length //<span style="font-family:'宋体';">獲取有效節點數</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">自動去除空白節點</span><span style="font-family:Calibri;">)</span></p> <p>box.childNodes.length //<span style="font-family:'宋体';">包含空白節點</span></p> <p>box.firstChild<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">box.lastChild</span> <span style="font-family:'宋体';">也包含空白節點</span>(<span style="font-family:'宋体';">換行符就是一空白節點</span><span style="font-family:Calibri;">)</span></p> <p>box.contains(box.firstChild) //<span style="font-family:'宋体';">判斷是否子節點</span></p> <p>box.compareDocumentPosition(box.firstChild) //<span style="font-family:'宋体';">全相容,返回關係掩碼值,如包含為</span><span style="font-family:Calibri;">20(16+4)</span></p> <p><span style="font-family:'宋体';">掩碼</span> 節點關係</p> <p>1 <span style="font-family:'宋体';">無關</span>(<span style="font-family:'宋体';">節點不存在</span><span style="font-family:Calibri;">)</span></p> <p>2 <span style="font-family:'宋体';">居前</span>(<span style="font-family:'宋体';">節點在參考點之前</span><span style="font-family:Calibri;">)</span></p> <p>4 <span style="font-family:'宋体';">居後</span>(<span style="font-family:'宋体';">節點在參考點之後</span><span style="font-family:Calibri;">)</span></p> <p>8 <span style="font-family:'宋体';">包含</span>(<span style="font-family:'宋体';">節點是參考點的祖先</span><span style="font-family:Calibri;">)</span></p> <p>16 <span style="font-family:'宋体';">被包含</span>(<span style="font-family:'宋体';">節點是參考點的後代</span><span style="font-family:Calibri;">)</span><br>document.getElementById('box').innerText; //<span style="font-family:'宋体';">獲取文本內容</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">如有 </span><span style="font-family:Calibri;">html </span><span style="font-family:'宋体';">直接過濾掉</span><span style="font-family:Calibri;">)</span></p> <p>document.getElementById('box').innerText = 'Mr.Lee'; //<span style="font-family:'宋体';">設置文本</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">如有 </span><span style="font-family:Calibri;">html </span><span style="font-family:'宋体';">轉義</span><span style="font-family:Calibri;">)</span></p> <p>document.getElementById('box').innerHTML; //<span style="font-family:'宋体';">獲取文本</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">不過濾 </span><span style="font-family:Calibri;">HTML)</span></p> <p>document.getElementById('box').innerHTML = '<b>123</b>'; //<span style="font-family:'宋体';">可解析 </span><span style="font-family:Calibri;">HTML</span></p> <p>box.outerText; //<span style="font-family:'宋体';">獲取文本內容</span></p> <p>box.outerText = '<b>123</b>'; //<span style="font-family:'宋体';">設置文本</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">如有 </span><span style="font-family:Calibri;">html </span><span style="font-family:'宋体';">轉義</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">,但會將元素抹去</span></p> <p>box.outerHTML //<span style="font-family:'宋体';">取值和 </span><span style="font-family:Calibri;">innerHTML </span><span style="font-family:'宋体';">一致</span></p> <p>box.outerHTML= '<b>123</b>'; //<span style="font-family:'宋体';">同</span><span style="font-family:Calibri;">outerText</span><span style="font-family:'宋体';">,賦值的之後會將元素抹去。</span></p> <p><span style="font-family:'宋体';">注釋:</span>innerHTML<span style="font-family:'宋体';">解析器比</span><span style="font-family:Calibri;">JS</span><span style="font-family:'宋体';">快,因為此</span><span style="font-family:Calibri;">Html</span><span style="font-family:'宋体';">解析器為流覽器級別,但創建和銷毀也會帶來損失。</span></p> <p>29、Table<span style="font-family:'宋体';">屬性</span></p> <p>var table =document.getElementsByTagName(‘table’);</p> <p>table.caption //<caption><span style="font-family:'宋体';">元素</span></p> <p>table.tBodies //<tbody><span style="font-family:'宋体';">元素的集合</span></p> <p>table.tFoot //<tfoot><span style="font-family:'宋体';">元素</span></p> <p>table.tHead //<thead><span style="font-family:'宋体';">元素</span></p> <p>table.rows //<tr> <span style="font-family:'宋体';">元素的集合</span></p> <p>table.createTHead() //<span style="font-family:'宋体';">創建</span><span style="font-family:Calibri;"><thead></span><span style="font-family:'宋体';">元素,並返回引用</span></p> <p>table.createTFoot() //<span style="font-family:'宋体';">創建</span><span style="font-family:Calibri;"><tfoot></span><span style="font-family:'宋体';">元素,並返回引用</span></p> <p>table.createCaption() //<span style="font-family:'宋体';">創建</span><span style="font-family:Calibri;"><caption></span><span style="font-family:'宋体';">元素,並返回引用</span></p> <p>table.deleteTHead() //<span style="font-family:'宋体';">刪除</span><span style="font-family:Calibri;"><thead></span><span style="font-family:'宋体';">元素</span></p> <p>table.deleteTFoot() //<span style="font-family:'宋体';">刪除</span><span style="font-family:Calibri;"><tfoot></span><span style="font-family:'宋体';">元素</span></p> <p>table.deleteCaption() //<span style="font-family:'宋体';">刪除</span><span style="font-family:Calibri;"><caption></span><span style="font-family:'宋体';">元素</span></p> <p>table.deleteRow(pos) //<span style="font-family:'宋体';">刪除指定的行</span></p> <p>table.insertRow(pos) //<span style="font-family:'宋体';">向 </span><span style="font-family:Calibri;">rows </span><span style="font-family:'宋体';">集合中的指定位置插入一行</span></p> <p>var tbody=table.tBodies[0] //<tbody><span style="font-family:'宋体';">元素添加的屬性和方法</span></p> <p>tbody.rows //<span style="font-family:'宋体';">保存著</span><span style="font-family:Calibri;"><tbody></span><span style="font-family:'宋体';">元素中行的集合</span></p> <p>tbody.deleteRow(pos) //<span style="font-family:'宋体';">刪除指定位置的行</span></p> <p>tbody.insertRow(pos) //<span style="font-family:'宋体';">向 </span><span style="font-family:Calibri;">rows </span><span style="font-family:'宋体';">集合中的指定位置插入一行,並返回引用</span><br>var tr=tbody.rows[0] //</p> <p>tr.cells //<span style="font-family:'宋体';">保存著</span><span style="font-family:Calibri;"><tr></span><span style="font-family:'宋体';">元素中單元格的 </span><span style="font-family:Calibri;">HTMLCollection</span></p> <p>tr.deleteCell(pos) //<span style="font-family:'宋体';">刪除指定位置的單元格</span></p> <p>tr.insertCell(pos) //<span style="font-family:'宋体';">向</span><span style="font-family:Calibri;">cells</span><span style="font-family:'宋体';">集合的指定位置插入一個單元格,並返回引用</span></p> <p>30<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">CSS</span><span style="font-family:'宋体';">樣式:</span><span style="font-family:Calibri;">var box=document.getElementById(</span>‘box’)</p> <p>box.style.color //<span style="font-family:'宋体';">設置顏色</span></p> <p>box.style.fontSize //<span style="font-family:'宋体';">設置字體大小</span></p> <p>box.style.cssFloat<span style="font-family:'宋体';">;</span> //<span style="font-family:'宋体';">非</span><span style="font-family:Calibri;">IE</span><span style="font-family:'宋体';">の</span><span style="font-family:Calibri;">float</span></p> <p>box.style.styleFloat //IE<span style="font-family:'宋体';">の</span><span style="font-family:Calibri;">float</span></p> <p>box.style.cssText //<span style="font-family:'宋体';">訪問或設置 </span><span style="font-family:Calibri;">style </span><span style="font-family:'宋体';">中的 </span><span style="font-family:Calibri;">CSS </span><span style="font-family:'宋体';">代碼</span></p> <p>box.style.length //CSS <span style="font-family:'宋体';">屬性的數量</span></p> <p>box.style.parentRule //CSS <span style="font-family:'宋体';">信息的 </span><span style="font-family:Calibri;">CSSRule </span><span style="font-family:'宋体';">對象</span></p> <p>box.style.getPropertyCSSValue(name) //<span style="font-family:'宋体';">返回包含給定屬性值的 </span><span style="font-family:Calibri;">CSSValue </span><span style="font-family:'宋体';">對象</span></p> <p>box.style.getPropertyPriority(name) //<span style="font-family:'宋体';">如果設置了</span><span style="font-family:Calibri;">!important</span><span style="font-family:'宋体';">,則返回,否則返回空字元串</span></p> <p>box.style.item(index) //<span style="font-family:'宋体';">返回指定位置 </span><span style="font-family:Calibri;">CSS </span><span style="font-family:'宋体';">屬性名稱</span></p> <p>box.style.removeProperty(name) //<span style="font-family:'宋体';">從樣式中刪除指定屬性</span></p> <p>box.style.setProperty(name,v,p) //<span style="font-family:'宋体';">給屬性設置為相應的值,並加上優先權</span></p> <p>style <span style="font-family:'宋体';">屬性僅僅只能獲取行內的 </span><span style="font-family:Calibri;">CSS </span><span style="font-family:'宋体';">樣式,對於另外兩種形式內聯</span><span style="font-family:Calibri;"><style></span><span style="font-family:'宋体';">和鏈接</span><span style="font-family:Calibri;"><link></span><span style="font-family:'宋体';">方式則無法獲取到。</span></p> <p>var style = window.getComputedStyle ?window.getComputedStyle(box, null) : null || box.currentStyle;</p> <p>通過計算後的樣式值</p> <p>PS<span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">border </span><span style="font-family:'宋体';">屬性是一個綜合屬性,所以他在 </span><span style="font-family:Calibri;">Chrome </span><span style="font-family:'宋体';">顯示了,</span><span style="font-family:Calibri;">Firefox </span><span style="font-family:'宋体';">為空,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">為 </span><span style="font-family:Calibri;">undefined</span><span style="font-family:'宋体';">。</span></p> <p><span style="font-family:'宋体';">所謂綜合性屬性,就是</span> XHTML <span style="font-family:'宋体';">課程裏所的簡寫形式,所以,</span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">在獲取 </span><span style="font-family:Calibri;">CSS </span><span style="font-family:'宋体';">的時候,最</span></p> <p><span style="font-family:'宋体';">好採用完整寫法相容性最好,比如:</span>border-top-color <span style="font-family:'宋体';">之類的。</span></p> <p>//<span style="font-family:'宋体';">判斷是否存在這個</span><span style="font-family:Calibri;">class</span></p> <p>function hasClass(element, className) {</p> <p>return element.className.match(new RegExp('(\\s|^)'+className+'(\\s|$)'));</p> <p>}</p> <p>//<span style="font-family:'宋体';">添加一個 </span><span style="font-family:Calibri;">class</span><span style="font-family:'宋体';">,如果不存在的話</span></p> <p>function addClass(element, className) {</p> <p>if (!hasClass(element, className)) {</p> <p>element.className += " "+className;</p> <p>}</p> <p>}</p> <p>//<span style="font-family:'宋体';">刪除一個 </span><span style="font-family:Calibri;">class</span><span style="font-family:'宋体';">,如果存在的話</span></p> <p>function removeClass(element, className) {</p> <p>if (hasClass(element, className)) {</p> <p>element.className = element.className.replace(</p> <p>new RegExp('(\\s|^)'+className+'(\\s|$)'),' ');</p> <p>}</p> <p>}</p> <p> </p> <p>document.implementation.hasFeature('StyleSheets', '2.0') //<span style="font-family:'宋体';">是否支持 </span><span style="font-family:Calibri;">DOM2 </span><span style="font-family:'宋体';">級樣式表</span></p> <p>document.getElementsByTagName('link')[0]; //HTMLLinkElement</p> <p>document.getElementsByTagName('style')[0]; //HTMLStyleElement</p> <p>var link = document.getElementsByTagName('link')[0];</p> <p>var sheet = link.sheet || link.styleSheet; //<span style="font-family:'宋体';">得到 </span><span style="font-family:Calibri;">CSSStyleSheet</span></p> <p>sheet.disabled //<span style="font-family:'宋体';">獲取和設置樣式表是否被禁用</span></p> <p>sheet.href //<span style="font-family:'宋体';">如果是通過</span><span style="font-family:Calibri;"><link></span><span style="font-family:'宋体';">包含的,則樣式表為 </span><span style="font-family:Calibri;">URL</span><span style="font-family:'宋体';">,否則為 </span><span style="font-family:Calibri;">null</span></p> <p>sheet.media //<span style="font-family:'宋体';">樣式表支持的所有媒體類型的集合</span></p> <p>sheet.ownerNode //<span style="font-family:'宋体';">指向擁有當前樣式表節點的指針</span></p> <p>sheet.parentStyleSheet //@import <span style="font-family:'宋体';">導入的情況下,得到父 </span><span style="font-family:Calibri;">CSS </span><span style="font-family:'宋体';">對象</span></p> <p>sheet.title //ownerNode <span style="font-family:'宋体';">中 </span><span style="font-family:Calibri;">title </span><span style="font-family:'宋体';">屬性的值</span></p> <p>sheet.type //<span style="font-family:'宋体';">樣式表類型字串</span></p> <p>sheet.cssRules //<span style="font-family:'宋体';">樣式表包含樣式規則的集合,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">不支持</span></p> <p>sheet.rules; //<span style="font-family:'宋体';">代替 </span><span style="font-family:Calibri;">cssRules </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">版本</span></p> <p>sheet.ownerRule //@import <span style="font-family:'宋体';">導入的情況下,指向表示導入的規則,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">不支持</span></p> <p>sheet.deleteRule(index) //<span style="font-family:'宋体';">刪除 </span><span style="font-family:Calibri;">cssRules </span><span style="font-family:'宋体';">集合中指定位置的規則,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">不支持</span></p> <p>sheet.removeRule(0); //<span style="font-family:'宋体';">代替 </span><span style="font-family:Calibri;">deleteRule </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">版本</span></p> <p>sheet.insertRule(rule, index) //<span style="font-family:'宋体';">向 </span><span style="font-family:Calibri;">cssRules </span><span style="font-family:'宋体';">集合中指定位置插入 </span><span style="font-family:Calibri;">rule </span><span style="font-family:'宋体';">字串,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">不支持</span></p> <p>sheet.addRule("body", " //<span style="font-family:'宋体';">代替 </span><span style="font-family:Calibri;">insertRule </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">版本</span></p> <p><span style="font-family:'宋体';">刪除</span>rule</p> <p>function deleteRule(sheet, index) {</p> <p>if (sheet.deleteRule) { //<span style="font-family:'宋体';">如果是非 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.deleteRule(index);</p> <p>} else if (sheet.removeRule) { //<span style="font-family:'宋体';">如果是 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.removeRule(index);</p> <p>}</p> <p>}</p> <p><span style="font-family:'宋体';">添加</span>rule</p> <p>function insertRule(sheet, selectorText, cssText, position) {</p> <p>if (sheet.insertRule) { //<span style="font-family:'宋体';">如果是非 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.insertRule(selectorText + "{" + cssText + "}", position);</p> <p>} else if (sheet.addRule) { //<span style="font-family:'宋体';">如果是 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.addRule(selectorText, cssText, position);</p> <p>}</p> <p>}</p> <p>31<span style="font-family:'宋体';">、屏幕中的位置(直接使用,無需前綴):</span></p> <p>screenLeft<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">screenTop</span><span style="font-family:'宋体';">:除了火狐都支持</span></p> <p>screenX<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">screenY</span><span style="font-family:'宋体';">:</span></p> <p><span style="font-family:'宋体';">窗口的大小(穀歌的</span>inner=outer<span style="font-family:'宋体';">,直接使用,無需前綴):</span></p> <p>innerWidth<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">innerHeight</span><span style="font-family:'宋体';">:頁面的長、高</span></p> <p>outerWidth<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">outerHeight</span><span style="font-family:'宋体';">:頁面</span><span style="font-family:Calibri;">+</span><span style="font-family:'宋体';">邊框の長、高</span></p> <p>HTML<span style="font-family:'宋体';">的大小:</span></p> <p>document.documentElement.clientWidth<span style="font-family:'宋体';">:同</span><span style="font-family:Calibri;">innerWidth</span></p> <p>document.documentElement.clientHeight<span style="font-family:'宋体';">:同</span><span style="font-family:Calibri;">innerHeight</span></p> <p>Body<span style="font-family:'宋体';">的大小:</span></p> <p>document.body.clientHeight<span style="font-family:'宋体';">:高</span></p> <p>document.body.clientWidth<span style="font-family:'宋体';">:寬</span></p> <p>某個元素的大小:</p> <p>var p=document.getElementById('p');</p> <p>p.clientWidth<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">p.clientHeight</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">border</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">margin</span><span style="font-family:'宋体';">不算入其內,</span><span style="font-family:Calibri;">padding</span><span style="font-family:'宋体';">算入其內,</span><span style="font-family:Calibri;">scroll</span><span style="font-family:'宋体';">(滾動條)會減小其大小。</span></p> <p>p.scrollWidth<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">p.scrollHeight</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">margin</span><span style="font-family:'宋体';">不算入其內,</span><span style="font-family:Calibri;">padding</span><span style="font-family:'宋体';">會增加,</span><span style="font-family:Calibri;">scroll</span><span style="font-family:'宋体';">會減小,</span><span style="font-family:Calibri;">border</span><span style="font-family:'宋体';">各瀏覽器解釋不同。</span></p> <p>p.offsetWidth<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">p.offsetHeight</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">border</span><span style="font-family:'宋体';">和</span><span style="font-family:Calibri;">padding</span><span style="font-family:'宋体';">會增加,</span><span style="font-family:Calibri;">margin</span><span style="font-family:'宋体';">和</span><span style="font-family:Calibri;">scroll</span><span style="font-family:'宋体';">不算入其內。相容性最好</span></p> <p>某個元素的屬性大小:</p> <p>p.clientLeft<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">p.clientTop</span><span style="font-family:'宋体';">:邊框的大小(沒有</span><span style="font-family:Calibri;">right</span><span style="font-family:'宋体';">和</span><span style="font-family:Calibri;">bottom</span><span style="font-family:'宋体';">)</span></p> <p>p.offsetLeft<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">p.offsetTop</span><span style="font-family:'宋体';">:相對於父元素的位置(像素)</span></p> <p>p.offsetParent<span style="font-family:'宋体';">:獲得父元素</span></p> <p>滾動條顯示區域相對於初始位置的值:</p> <p>document.documentElement.scrollTop</p> <p>document.documentElement.scrollLeft</p> <p><span style="font-family:'宋体';">滾動條顯示區域相對於初始位置的值</span><IE6<span style="font-family:'宋体';">支持</span><span style="font-family:Calibri;">></span><span style="font-family:'宋体';">:</span></p> <p>document.body.scrollTop</p> <p>document.body.scrollLeft</p> <p><span style="font-family:'宋体';">轉《</span>html<span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">offsetTop</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">clientTop</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">scrollTop</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">offsetTop</span><span style="font-family:'宋体';">各屬性介紹》</span></p> <p>scrollWidth:<span style="font-family:'宋体';">獲取對象的滾動寬度</span></p> <p>scrollHeight: <span style="font-family:'宋体';">獲取對象的滾動高度</span></p> <p>scrollLeft:<span style="font-family:'宋体';">設置或獲取位於對象左邊界和窗口中目前可見內容的最左端之間的距離</span></p> <p>scrollTop:<span style="font-family:'宋体';">設置或獲取位於對象最頂端和窗口中可見內容的最頂端之間的距離</span></p> <p>offsetHeight:<span style="font-family:'宋体';">獲取對象相對於版面或由父座標</span><span style="font-family:Calibri;">offsetParent </span><span style="font-family:'宋体';">屬性指定的父座標的高度</span></p> <p>offsetLeft:<span style="font-family:'宋体';">獲取對象相對於版面或由</span><span style="font-family:Calibri;">offsetParent </span><span style="font-family:'宋体';">屬性指定的父座標的計算左側位置</span></p> <p>offsetTop:<span style="font-family:'宋体';">獲取對象相對於版面或由 </span><span style="font-family:Calibri;">offsetTop </span><span style="font-family:'宋体';">屬性指定的父座標的計算頂端位置</span></p> <p>event.clientX <span style="font-family:'宋体';">相對文檔的水準座標</span></p> <p>event.clientY <span style="font-family:'宋体';">相對文檔的垂直座標</span></p> <p>event.offsetX <span style="font-family:'宋体';">相對容器的水準座標</span></p> <p>event.offsetY <span style="font-family:'宋体';">相對容器的垂直座標</span></p> <p>document.documentElement.scrollTop <span style="font-family:'宋体';">垂直方向滾動的值</span></p> <p>event.clientX+document.documentElement.scrollTop <span style="font-family:'宋体';">相對文檔的水準座標</span><span style="font-family:Calibri;">+</span><span style="font-family:'宋体';">垂直方向滾動的量</span></p> <p>JavaScript<span style="font-family:'宋体';">中建造遷移轉變代碼的常用屬性</span></p> <p><span style="font-family:'宋体';">網頁可見區域寬:</span> document.body.clientWidth;</p> <p><span style="font-family:'宋体';">網頁可見區域高:</span> document.body.clientHeight;</p> <p><span style="font-family:'宋体';">網頁可見區域寬:</span> document.body.offsetWidth <span style="font-family:'宋体';">(包含邊線的寬)</span><span style="font-family:Calibri;">;</span></p> <p><span style="font-family:'宋体';">網頁可見區域高:</span> document.body.offsetHeight<span style="font-family:'宋体';">(包含邊線的寬)</span><span style="font-family:Calibri;">;</span></p> <p><span style="font-family:'宋体';">網頁正文全文寬:</span> document.body.scrollWidth;</p> <p><span style="font-family:'宋体';">網頁正文全文高:</span> document.body.scrollHeight;</p> <p><span style="font-family:'宋体';">網頁被卷去的高:</span> document.body.scrollTop;</p> <p><span style="font-family:'宋体';">網頁被卷去的左:</span> document.body.scrollLeft;</p> <p><span style="font-family:'宋体';">網頁正文專案組上:</span> window.screenTop;</p> <p><span style="font-family:'宋体';">網頁正文專案組左:</span> window.screenLeft;</p> <p><span style="font-family:'宋体';">屏幕辨別率的高:</span> window.screen.height;</p> <p><span style="font-family:'宋体';">屏幕辨別率的寬:</span> window.screen.width;</p> <p><span style="font-family:'宋体';">屏幕可用工作區高度:</span> window.screen.availHeight;</p> <p>32、動態加載腳本</p> <p>function loadScript(url) {</p> <p>var script = document.createElement('script');</p> <p>script.type = 'text/javascript';</p> <p>script.src = url;</p> <p>//document.head.appendChild(script);  //document.head <span style="font-family:'宋体';">表示</span><span style="font-family:Calibri;"><head></span></p> <p>document.getElementsByTagName('head')[0].appendChild(script);</p> <p>}</p> <p>//<span style="font-family:'宋体';">動態執行 </span><span style="font-family:Calibri;">js</span></p> <p>var script = document.createElement('script');</p> <p>script.type = 'text/javascript';</p> <p>var text = document.createTextNode("alert('Lee')"); //IE <span style="font-family:'宋体';">流覽器報錯</span></p> <p>//IE<span style="font-family:'宋体';">相容寫法:</span><span style="font-family:Calibri;">script.txt=</span>”alert(‘Lee’)”;</p> <p>script.appendChild(text);</p> <p>document.getElementsByTagName('head')[0].appendChild(script)</p> <p>//<span style="font-family:'宋体';">動態執行 </span><span style="font-family:Calibri;">link</span></p> <p>function loadStyles(url) {</p> <p>var link = document.createElement('link');</p> <p>link.rel = 'stylesheet';</p> <p>link.type = 'text/css';</p> <p>link.href = url;</p> <p>document.getElementsByTagName('head')[0].appendChild(link);</p> <p>}</p> <p>//<span style="font-family:'宋体';">動態執行 </span><span style="font-family:Calibri;">style</span></p> <p>var style = document.createElement('style');</p> <p>style.type = 'text/css';</p> <p>//var box= document.createTextNode(#box{background:red}'); IE <span style="font-family:'宋体';">不支持</span></p> <p>//style.appendChild(box);</p> <p>document.getElementsByTagName('head')[0].appendChild(style);</p> <p>insertRule(document.styleSheets[0], '#box', 'background:red', 0);</p> <p>}</p> <p>function insertRule(sheet, selectorText, cssText, position) {</p> <p>if (sheet.insertRule) { //<span style="font-family:'宋体';">如果是非 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.insertRule(selectorText + "{" + cssText + "}", position);</p> <p>} else if (sheet.addRule) { //<span style="font-family:'宋体';">如果是 </span><span style="font-family:Calibri;">IE</span></p> <p>sheet.addRule(selectorText, cssText, position);</p> <p>}</p> <p>}</p> <p>33、事件入門</p> <p>//<span style="font-family:'宋体';">在 </span><span style="font-family:Calibri;">HTML </span><span style="font-family:'宋体';">中把事件處理函數作為屬性執行 </span><span style="font-family:Calibri;">JS </span><span style="font-family:'宋体';">代碼</span></p> <p><input type="button" value="<span style="font-family:'宋体';">按鈕</span><span style="font-family:Calibri;">" οnclick="alert('Lee');" /> //</span><span style="font-family:'宋体';">注意單雙引號</span></p> <p>//<span style="font-family:'宋体';">在 </span><span style="font-family:Calibri;">HTML </span><span style="font-family:'宋体';">中把事件處理函數作為屬性執行 </span><span style="font-family:Calibri;">JS </span><span style="font-family:'宋体';">函數</span></p> <p><input type="button" value="<span style="font-family:'宋体';">按鈕</span><span style="font-family:Calibri;">" οnclick="box();" /> //</span><span style="font-family:'宋体';">執行 </span><span style="font-family:Calibri;">JS </span><span style="font-family:'宋体';">的函數</span></p> <p>PS<span style="font-family:'宋体';">:函數不得放到 </span><span style="font-family:Calibri;">window.onload </span><span style="font-family:'宋体';">裏面,這樣就看不見了。</span></p> <p>事件函數:</p> <p>onabort //<span style="font-family:'宋体';">圖像 當圖像加載被中斷時</span></p> <p>onblur //<span style="font-family:'宋体';">窗口、框架、所有表單對象 當焦點從對象上移開時</span></p> <p>onchange //<span style="font-family:'宋体';">輸入框,選擇框和文本區域 當改變一個元素的值且失去焦點時</span></p> <p>onclick //<span style="font-family:'宋体';">鏈接、按鈕、表單對象、圖像映射區域 當用戶單擊對象時</span></p> <p>ondblclick //<span style="font-family:'宋体';">鏈接、按鈕、表單對象 當用戶雙擊對象時</span></p> <p>ondragdrop //<span style="font-family:'宋体';">窗口 當用戶將一個對象拖放到流覽器窗口時</span></p> <p>onError //<span style="font-family:'宋体';">腳本 當腳本中發生語法錯誤時</span></p> <p>onfocus //<span style="font-family:'宋体';">窗口、框架、所有表單對象 當單擊滑鼠或者將滑鼠移動聚焦到窗口或框架時</span></p> <p>onkeydown //<span style="font-family:'宋体';">文檔、圖像、鏈接、表單 當按鍵被按下時</span></p> <p>onkeypress //<span style="font-family:'宋体';">文檔、圖像、鏈接、表單 當按鍵被按下然後鬆開時</span></p> <p>onkeyup //<span style="font-family:'宋体';">文檔、圖像、鏈接、表單 當按鍵被鬆開時</span></p> <p>onload //<span style="font-family:'宋体';">主題、框架集、圖像 文檔或圖像加載後</span></p> <p>onunload //<span style="font-family:'宋体';">主體、框架集 文檔或框架集卸載後</span></p> <p>onmouseout //<span style="font-family:'宋体';">鏈接 當圖示移除鏈接時</span></p> <p>onmouseover //<span style="font-family:'宋体';">鏈接 當滑鼠移到鏈接時</span></p> <p>onmove //<span style="font-family:'宋体';">窗口 當流覽器窗口移動時</span></p> <p>onreset //<span style="font-family:'宋体';">表單複位按鈕 單擊表單的 </span><span style="font-family:Calibri;">reset </span><span style="font-family:'宋体';">按鈕</span></p> <p>onresize //<span style="font-family:'宋体';">窗口 當選擇一個表單對象時</span></p> <p>onselect //<span style="font-family:'宋体';">表單元素 當選擇一個表單對象時</span></p> <p>onsubmit //<span style="font-family:'宋体';">表單 當發送表格到服務器時</span></p> <p>onscroll //<span style="font-family:'宋体';">移動滾動條時觸發</span></p> <p><span style="font-family:'宋体';">事件對象,我們一般稱作為</span> event <span style="font-family:'宋体';">對象,這個對象是流覽器通過函數把這個對象作為參數傳遞過來的。</span></p> <p><span style="font-family:'宋体';">獲取</span>event<span style="font-family:'宋体';">:①</span><span style="font-family:Calibri;">W3C</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">evt(</span><span style="font-family:'宋体';">皆支持</span><span style="font-family:Calibri;">) </span><span style="font-family:'宋体';">②</span><span style="font-family:Calibri;">window.event(Chrome&IE</span><span style="font-family:'宋体';">支持</span><span style="font-family:Calibri;">)</span></p> <p>event<span style="font-family:'宋体';">の值:</span> ①<span style="font-family:Calibri;">evt</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">0(</span><span style="font-family:'宋体';">主按鈕</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">1(</span><span style="font-family:'宋体';">中鍵</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">2(</span><span style="font-family:'宋体';">右鍵</span><span style="font-family:Calibri;">)</span></p> <p>②<span style="font-family:Calibri;">window.event</span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">0(</span><span style="font-family:'宋体';">沒按</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">1(</span><span style="font-family:'宋体';">主</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">2(</span><span style="font-family:'宋体';">次</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">3(</span><span style="font-family:'宋体';">主</span><span style="font-family:Calibri;">+</span><span style="font-family:'宋体';">次</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">4(</span><span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">5(</span><span style="font-family:'宋体';">主</span><span style="font-family:Calibri;">+</span><span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">6(</span><span style="font-family:'宋体';">次</span><span style="font-family:Calibri;">+</span><span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">7(</span><span style="font-family:'宋体';">三皆</span><span style="font-family:Calibri;">)</span></p> <p>event<span style="font-family:'宋体';">對象の屬性:</span></p> <p>var e=evt||window.event;</p> <p>e.clientX //<span style="font-family:'宋体';">可視區 </span><span style="font-family:Calibri;">X </span><span style="font-family:'宋体';">座標,距離左邊框的位置</span></p> <p>e.clientY //<span style="font-family:'宋体';">可視區 </span><span style="font-family:Calibri;">Y </span><span style="font-family:'宋体';">座標,距離上邊框的位置</span></p> <p>e.screenX //<span style="font-family:'宋体';">屏幕區 </span><span style="font-family:Calibri;">X </span><span style="font-family:'宋体';">座標,距離左屏幕的位置</span></p> <p>e.screenY //<span style="font-family:'宋体';">屏幕區 </span><span style="font-family:Calibri;">Y </span><span style="font-family:'宋体';">座標,距離上屏幕的位置</span></p> <p>e.shiftKey //<span style="font-family:'宋体';">判斷是否按下了 </span><span style="font-family:Calibri;">Shfit </span><span style="font-family:'宋体';">鍵</span></p> <p>e.ctrlKey //<span style="font-family:'宋体';">判斷是否按下了 </span><span style="font-family:Calibri;">ctrlKey </span><span style="font-family:'宋体';">鍵</span></p> <p>e.altKey //<span style="font-family:'宋体';">判斷是否按下了 </span><span style="font-family:Calibri;">alt </span><span style="font-family:'宋体';">鍵</span></p> <p>e.metaKey //<span style="font-family:'宋体';">判斷是否按下了 </span><span style="font-family:Calibri;">windows </span><span style="font-family:'宋体';">鍵,</span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">不支持</span></p> <p><span style="font-family:'宋体';">鍵盤事件中的</span>event<span style="font-family:'宋体';">:</span></p> <p>document.onkeydown = function (evt) {</p> <p>alert(evt.keyCode); //<span style="font-family:'宋体';">按任意鍵,得到相應的 </span><span style="font-family:Calibri;">keyCode</span></p> <p>};</p> <p>onkeypress<span style="font-family:'宋体';">為</span><span style="font-family:Calibri;">e.charCode</span><span style="font-family:'宋体';">,返回值區分大小寫,且只返回字元編碼的值</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">非字元鍵不返回</span><span style="font-family:Calibri;">)</span></p> <p>onkeydown<span style="font-family:'宋体';">和</span><span style="font-family:Calibri;">onkeyup</span><span style="font-family:'宋体';">為</span><span style="font-family:Calibri;">e.keyCode</span><span style="font-family:'宋体';">,返回值為按鍵對應的</span><span style="font-family:Calibri;">ASCII</span><span style="font-family:'宋体';">值,不分大小寫,全為大寫的</span><span style="font-family:Calibri;">ASCII</span><span style="font-family:'宋体';">碼值</span></p> <p>W3C<span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">event</span><span style="font-family:'宋体';">的事件與方法:屬性</span><span style="font-family:Calibri;">/</span><span style="font-family:'宋体';">方法 類型 讀</span><span style="font-family:Calibri;">/</span><span style="font-family:'宋体';">寫 說明</span></p> <p>bubbles //Boolean <span style="font-family:'宋体';">只讀 表明事件是否冒泡</span></p> <p>cancelable //Boolean <span style="font-family:'宋体';">只讀 表明是否可以取消事件的默認行為</span></p> <p>currentTarget //Element <span style="font-family:'宋体';">只讀 其事件處理程式當前正在處理事件的那個元素</span></p> <p>detail //Integer <span style="font-family:'宋体';">只讀 與事件相關的細節信息</span></p> <p>eventPhase //Integer <span style="font-family:'宋体';">只讀 調用事件處理程式的階段:</span><span style="font-family:Calibri;">1 </span><span style="font-family:'宋体';">表示捕獲階段,</span><span style="font-family:Calibri;">2 </span><span style="font-family:'宋体';">表示“處理目標”,</span><span style="font-family:Calibri;">3 </span><span style="font-family:'宋体';">表示冒泡階段</span></p> <p>preventDefault() //Function <span style="font-family:'宋体';">只讀 取消事件的默認行為。如果 </span><span style="font-family:Calibri;">cancelabel</span><span style="font-family:'宋体';">是 </span><span style="font-family:Calibri;">true</span><span style="font-family:'宋体';">,則可以使用這個方法</span></p> <p>stopPropagation() //Function <span style="font-family:'宋体';">只讀 取消事件的進一步捕獲或冒泡。如果</span><span style="font-family:Calibri;">bubbles </span><span style="font-family:'宋体';">為 </span><span style="font-family:Calibri;">true</span><span style="font-family:'宋体';">,則可以使用這個方法</span></p> <p>target //Element <span style="font-family:'宋体';">只讀 事件的目標</span></p> <p>type //String <span style="font-family:'宋体';">只讀 被觸發的事件的類型</span></p> <p>view //AbstractView <span style="font-family:'宋体';">只讀 與事件關聯的抽象視圖。等同於發生事件的 </span><span style="font-family:Calibri;">window </span><span style="font-family:'宋体';">對象</span></p> <p>IE <span style="font-family:'宋体';">中 </span><span style="font-family:Calibri;">event </span><span style="font-family:'宋体';">對象的屬性:屬性 類型 讀</span><span style="font-family:Calibri;">/</span><span style="font-family:'宋体';">寫 說明</span></p> <p>cancelBubble //Boolean <span style="font-family:'宋体';">讀</span><span style="font-family:Calibri;">/</span><span style="font-family:'宋体';">寫 默認值為 </span><span style="font-family:Calibri;">false</span><span style="font-family:'宋体';">,但將其設置為 </span><span style="font-family:Calibri;">true </span><span style="font-family:'宋体';">就可以取消事件冒泡</span></p> <p>returnValue //Boolean <span style="font-family:'宋体';">讀</span><span style="font-family:Calibri;">/</span><span style="font-family:'宋体';">寫 默認值為 </span><span style="font-family:Calibri;">true</span><span style="font-family:'宋体';">,但將其設置為 </span><span style="font-family:Calibri;">false </span><span style="font-family:'宋体';">就可以取消事件的默認行為</span></p> <p>srcElement //Element <span style="font-family:'宋体';">只讀 事件的目標</span></p> <p>type //String <span style="font-family:'宋体';">只讀 被觸發的事件類型</span></p> <p><span style="font-family:'宋体';">阻止冒泡的相容</span> </p> <p>function stopPro(evt) {</p> <p>var e = evt || window.event; </p> <p>window.event ? e.cancelBubble = true : e.stopPropagation(); </p> <p>34、事件處理</p> <p><span style="font-family:'宋体';">添加事件:</span>obj.addEventListener('<span style="font-family:'宋体';">事件名</span><span style="font-family:Calibri;">',</span><span style="font-family:'宋体';">函數</span><span style="font-family:Calibri;">,true(</span><span style="font-family:'宋体';">捕獲</span><span style="font-family:Calibri;">)/false(</span><span style="font-family:'宋体';">冒泡</span><span style="font-family:Calibri;">));</span></p> <p><span style="font-family:'宋体';">例如:</span>window.addEventListener('load', function () {alert('Mr.Lee');}, false);</p> <p><span style="font-family:'宋体';">移除事件:</span>obj.removeEventListener('<span style="font-family:'宋体';">事件名</span><span style="font-family:Calibri;">',</span><span style="font-family:'宋体';">函數</span><span style="font-family:Calibri;">,true(</span><span style="font-family:'宋体';">捕獲</span><span style="font-family:Calibri;">)/false(</span><span style="font-family:'宋体';">冒泡</span><span style="font-family:Calibri;">));</span></p> <p><span style="font-family:'宋体';">例如:</span>window.removeEventListener('load', function () {alert('Mr.Lee');}, false);</p> <p>relatedTarget<span style="font-family:'宋体';">;</span> //<span style="font-family:'宋体';">這個屬性可以在 </span><span style="font-family:Calibri;">mouseover </span><span style="font-family:'宋体';">和 </span><span style="font-family:Calibri;">mouseout </span><span style="font-family:'宋体';">事件中獲取從哪里移入和從哪里移出的 </span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">對象。</span></p> <p>box.onmouseover = function (evt) {  //<span style="font-family:'宋体';">滑鼠移入 </span><span style="font-family:Calibri;">box</span></p> <p>alert(evt.relatedTarget); //<span style="font-family:'宋体';">獲取移入 </span><span style="font-family:Calibri;">box </span><span style="font-family:'宋体';">最近的那個元素對象</span></p> <p>}</p> <p>上下文菜單</p> <p>addEvent(window, 'load', function () {</p> <p>var text = document.getElementById('text');</p> <p>addEvent(text, 'contextmenu', function (evt) {</p> <p>var e = evt || window.event;</p> <p>preDef(e);</p> <p>var menu = document.getElementById('menu');</p> <p>menu.style.left = e.clientX + 'px';</p> <p>menu.style.top = e.clientY + 'px';</p> <p>menu.style.visibility = 'visible';</p> <p>addEvent(document, 'click', function () {</p> <p>document.getElementById('myMenu').style.visibility = 'hidden';</p> <p>});</p> <p>});</p> <p>});</p> <p><span style="font-family:'宋体';">卸載前事件:</span>window.beforeunload=function(evt){evt.preventDefalt();}</p> <p><span style="font-family:'宋体';">滑鼠滾軸:</span>(<span style="font-family:'宋体';">非火狐</span><span style="font-family:Calibri;">)document.mousewheel=function(event){event.whellDelta;}</span> //<span style="font-family:'宋体';">獲取滑鼠上下滾輪的距離</span></p> <p>(<span style="font-family:'宋体';">火狐</span><span style="font-family:Calibri;">)document.DOMMouseScroll=function(event){event.detail;}</span> //<span style="font-family:'宋体';">獲取滑鼠上下滾輪的距離</span></p> <p>35、<span style="font-family:'宋体';">獲取</span>form</p> <p><span style="font-family:'宋体';">獲取表單</span><form><span style="font-family:'宋体';">對象的方法有很多種,如下:</span></p> <p>document.getElementById('myForm'); //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">ID </span><span style="font-family:'宋体';">獲取</span><span style="font-family:Calibri;"><form></span><span style="font-family:'宋体';">元素</span></p> <p>document.getElementsByTagName('form')[0]; //<span style="font-family:'宋体';">使用獲取第一個元素方式獲取</span></p> <p>document.forms[0]; //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">forms </span><span style="font-family:'宋体';">的數字下標獲取元素</span></p> <p>document.forms['yourForm']; //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">forms </span><span style="font-family:'宋体';">的名稱下標獲取元素</span></p> <p>document.yourForm; //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">name </span><span style="font-family:'宋体';">名稱直接獲取元素</span></p> <p>var fm=document.forms[0];</p> <p>fm.reset(); //<span style="font-family:'宋体';">讓非</span><span style="font-family:Calibri;">reset</span><span style="font-family:'宋体';">按鈕實現嗎重置</span></p> <p>fm.submit(); //<span style="font-family:'宋体';">讓非</span><span style="font-family:Calibri;">submit</span><span style="font-family:'宋体';">按鈕實現提交</span></p> <p>Ctrl+Enter<span style="font-family:'宋体';">提交</span></p> <p>if(event.ctrlKey&&event.keyCode==13) fm.submit();</p> <p><span style="font-family:'宋体';">在表單中儘量避免使用</span> name="submit"<span style="font-family:'宋体';">或 </span><span style="font-family:Calibri;">id="submit"</span><span style="font-family:'宋体';">等命名,這會和 </span><span style="font-family:Calibri;">submit()</span><span style="font-family:'宋体';">方法發生衝突導致無法提交</span></p> <p><span style="font-family:'宋体';">禁用按鈕:</span>document.getElementById('sub').disabled = true; //<span style="font-family:'宋体';">將按鈕禁用</span></p> <p>表單字段:</p> <p>fm.elements[0]; //<span style="font-family:'宋体';">獲取第一個表單字段元素</span></p> <p>fm.elements['user']; //<span style="font-family:'宋体';">獲取 </span><span style="font-family:Calibri;">name </span><span style="font-family:'宋体';">是 </span><span style="font-family:Calibri;">user </span><span style="font-family:'宋体';">的表單字段元素</span></p> <p>fm.elements.length; //<span style="font-family:'宋体';">獲取所有表單字段的數量</span></p> <p><span style="font-family:'宋体';">如果多個表單字段都使用同一個</span> name<span style="font-family:'宋体';">,那麼就會返回該 </span><span style="font-family:Calibri;">name </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">NodeList </span><span style="font-family:'宋体';">表單列表。</span></p> <p>fm.elements['sex']; //<span style="font-family:'宋体';">獲取相同 </span><span style="font-family:Calibri;">name </span><span style="font-family:'宋体';">表單字段列表</span></p> <p>fm.elements['sex'][0]; //<span style="font-family:'宋体';">獲取</span><span style="font-family:Calibri;">name</span><span style="font-family:'宋体';">為</span><span style="font-family:Calibri;">sex</span><span style="font-family:'宋体';">的第一個元素</span></p> <p>fm[0] //<span style="font-family:'宋体';">獲取第一個元素,同</span><span style="font-family:Calibri;">fm.elements[0]</span><span style="font-family:'宋体';">,但不建議使用</span></p> <p><span style="font-family:'宋体';">共有屬性:除了</span><fieldset><span style="font-family:'宋体';">元素之外。</span><span style="font-family:Calibri;">var fmchild=fm.elements[0];</span></p> <p>fmchild.disabled //<span style="font-family:'宋体';">布爾值,表示當前字段是否被禁用</span></p> <p>fmchild.form //<span style="font-family:'宋体';">指向當前字段所屬表單的指針,只讀</span></p> <p>fmchild.name //<span style="font-family:'宋体';">當前字段的名稱</span></p> <p>fmchild.readOnly //<span style="font-family:'宋体';">布爾值,表示當前字段是否只讀</span></p> <p>fmchild.tabIndex //<span style="font-family:'宋体';">表示當前字段的切換</span></p> <p>fmchild.type //<span style="font-family:'宋体';">當前字段的類型,不建議用其修改</span><span style="font-family:Calibri;">type</span></p> <p>fmchild.value //<span style="font-family:'宋体';">當前字段的值</span></p> <p><span style="font-family:'宋体';">使用表單的</span> value <span style="font-family:'宋体';">是最推薦使用的,它是 </span><span style="font-family:Calibri;">HTML DOM </span><span style="font-family:'宋体';">中的屬性,不建議使用標準</span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">的方法。也就是說不要使用 </span><span style="font-family:Calibri;">getAttribute()</span><span style="font-family:'宋体';">獲取 </span><span style="font-family:Calibri;">value </span><span style="font-family:'宋体';">值。</span></p> <p>type<span style="font-family:'宋体';">值:除了</span><span style="font-family:Calibri;"><fieldset></span><span style="font-family:'宋体';">元素之外。</span></p> <p> HTML <span style="font-family:'宋体';">標籤 </span> type <span style="font-family:'宋体';">屬性的值</span></p> <p><select>...</select> select-one</p> <p> <select multiple>...</select> select-multiple</p> <p> <button>...</button> button</p> <p> <button type="button">...</button> button</p> <p> <button type="reset">...</button> reset</p> <p> <button type="submit">...</button> submit</p> <p><span style="font-family:'宋体';">共有方法:</span>fmchild.focus()<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">fmchild.blur()</span></p> <p><span style="font-family:'宋体';">共有事件:</span>fmchild.onfocus<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">fmchild.onblur</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">fmchild.onchange</span></p> <p><span style="font-family:'宋体';">文本框處理:</span>var text=fm.elements[2];</p> <p><span style="font-family:'宋体';">取值:</span> text.value area.value</p> <p><span style="font-family:'宋体';">默認值:</span>text.defaultValue area.defaultValue</p> <p><span style="font-family:'宋体';">文本選擇:</span>text.setSelectionRange(m,n); //<span style="font-family:'宋体';">從</span><span style="font-family:Calibri;">m</span><span style="font-family:'宋体';">選到</span><span style="font-family:Calibri;">n</span><span style="font-family:'宋体';">,全選為</span><span style="font-family:Calibri;">0</span><span style="font-family:'宋体';">到</span><span style="font-family:Calibri;">text.value.length</span></p> <p><span style="font-family:'宋体';">取得文本:</span>text.οnselect=function(){</p> <p>this.value.substring(this.selectionStart, this.selectionEnd);</p> <p>}</p> <p>遮罩非數字鍵:</p> <p>areaField.addEventListener('keypress', function (evt) {</p> <p>var e = evt || window.event;</p> <p>var charCode = getCharCode(evt); //<span style="font-family:'宋体';">得到字元編碼</span></p> <p>if (!/\d/.test(String.fromCharCode(charCode)) && charCode > 8) { //<span style="font-family:'宋体';">條件阻止默認</span></p> <p>e.preventDefault();</p> <p>}},false);</p> <p>遮罩複製、剪切、粘貼:</p> <p>oncopy<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">oncut</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">onpaste</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">onbeforecopy</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">onbeforecut</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">onbeforepaste</span><span style="font-family:'宋体';">,遮罩器默認行為即可</span></p> <p><span style="font-family:'宋体';">遮罩輸入法:除</span>Chrome<span style="font-family:'宋体';">皆支持</span></p> <p>style=’ime-mode:disabled’ //css<span style="font-family:'宋体';">中</span></p> <p>text.style.imeMode=’disabled’ //js<span style="font-family:'宋体';">中</span></p> <p>Chrome<span style="font-family:'宋体';">支持の,將非數字鍵轉為空</span></p> <p>areaField.addEventListener( 'keyup', function (evt) { //keyup <span style="font-family:'宋体';">彈起的時候</span></p> <p>this.value = this.value.replace(/[^\d]/g, ''); //<span style="font-family:'宋体';">把非數字都替換成空</span></p> <p>},false);</p> <p>自動調焦:</p> <p>function tabForward (evt) {</p> <p>var e = evt || window.event;</p> <p>var target = evt.target;</p> <p>if (target.value.length == target.maxLength) { //<span style="font-family:'宋体';">判斷當前長度是否和指定長度一致</span></p> <p>for (var i =0; i < fm.elements.length; i ++) { //<span style="font-family:'宋体';">遍曆所有字段</span></p> <p>if (fm.elements[i] == target) { //<span style="font-family:'宋体';">找到當前字段</span></p> <p>fm.elements[i + 1].focus(); //<span style="font-family:'宋体';">就把焦點移入下一個</span></p> <p>return; //<span style="font-family:'宋体';">中途返回</span></p> <p>}</p> <p>}</p> <p>}</p> <p>}</p> <p>36、form<span style="font-family:'宋体';">中の元素</span></p> <p>select<span style="font-family:'宋体';">の對象:</span></p> <p>var select=fm.elements[4];</p> <p>select.add(new,rel) //<span style="font-family:'宋体';">插入新元素,並指定位置</span></p> <p>select.multiple //<span style="font-family:'宋体';">布爾值,是否允許多項選擇</span></p> <p>select.options //<option><span style="font-family:'宋体';">元素的 </span><span style="font-family:Calibri;">HTMLColletion </span><span style="font-family:'宋体';">集合</span></p> <p>select.remove(index) //<span style="font-family:'宋体';">移除給定位置的選項</span></p> <p>select.selectedIndex //<span style="font-family:'宋体';">基於 </span><span style="font-family:Calibri;">0 </span><span style="font-family:'宋体';">的選中項的索引,如果沒有選中項,則值為</span><span style="font-family:Calibri;">-1</span></p> <p>select.size //<span style="font-family:'宋体';">選擇框中可見的行數</span></p> <p>var option=select.options[0]</p> <p>option.index //<span style="font-family:'宋体';">當前選項在 </span><span style="font-family:Calibri;">options </span><span style="font-family:'宋体';">集合中的索引</span></p> <p>option.label //<span style="font-family:'宋体';">當前選項的標籤</span></p> <p>option.selected //<span style="font-family:'宋体';">布爾值,表示當前選項是否被選中</span></p> <p>option.text //<span style="font-family:'宋体';">選項的文本</span></p> <p>option.value //<span style="font-family:'宋体';">選項的值</span></p> <p>添加選項</p> <p><span style="font-family:'宋体';">如需動態的添加選項我們有兩種方案:</span>DOM <span style="font-family:'宋体';">和 </span><span style="font-family:Calibri;">Option </span><span style="font-family:'宋体';">構造函數。</span></p> <p>var option = document.createElement('option');</p> <p>option.appendChild(document.createTextNode('<span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">t'));</span></p> <p>option.setAttribute('value', '<span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">v')</span></p> <p>city.appendChild(option);</p> <p><span style="font-family:'宋体';">使用</span> Option <span style="font-family:'宋体';">構造函數創建:</span></p> <p>var option = new Option('<span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">t', '</span><span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">v');</span></p> <p>city.appendChild(option); //IE8(<span style="font-family:'宋体';">含</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">之前出現 </span><span style="font-family:Calibri;">bug</span><span style="font-family:'宋体';">,現在不再支持</span><span style="font-family:Calibri;">IE8(</span><span style="font-family:'宋体';">含</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">之前,故可理解為全相容</span></p> <p><span style="font-family:'宋体';">使用</span> add()<span style="font-family:'宋体';">方法來添加選項:</span></p> <p>var option = new Option('<span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">t', '</span><span style="font-family:'宋体';">北京 </span><span style="font-family:Calibri;">v');</span></p> <p>city.add(option, 0); //0<span style="font-family:'宋体';">,表示添加到第一位</span></p> <p>PS<span style="font-family:'宋体';">:在 </span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">規定,</span><span style="font-family:Calibri;">add()</span><span style="font-family:'宋体';">中兩個參數是必須的,如果不確定索引,那麼第二個參數設置 </span><span style="font-family:Calibri;">null </span><span style="font-family:'宋体';">即可,即默認移入最後一個選項。但這是 </span><span style="font-family:Calibri;">IE </span><span style="font-family:'宋体';">中規定第二個參數是可選的,所以設置</span><span style="font-family:Calibri;">null </span><span style="font-family:'宋体';">表示放入不存在的位置,導致失蹤,為了相容性,我們傳遞 </span><span style="font-family:Calibri;">undefined </span><span style="font-family:'宋体';">即可相容。</span></p> <p>city.add(option, null); //IE <span style="font-family:'宋体';">不顯示了</span></p> <p>city.add(option, undefined); //<span style="font-family:'宋体';">相容了</span></p> <p>移除選項</p> <p><span style="font-family:'宋体';">有三種方式可以移除某一個選項:</span>DOM <span style="font-family:'宋体';">移除、</span><span style="font-family:Calibri;">remove()</span><span style="font-family:'宋体';">方法移除和 </span><span style="font-family:Calibri;">null </span><span style="font-family:'宋体';">移除。</span></p> <p>city.removeChild(city.options[0]); //DOM <span style="font-family:'宋体';">移除</span></p> <p>city.remove(0); //remove()<span style="font-family:'宋体';">移除,推薦</span></p> <p>city.options[0] = null; //null <span style="font-family:'宋体';">移除</span></p> <p>PS<span style="font-family:'宋体';">:當第一項移除後,下麵的項,往上頂,所以不停的移除第一項,即可全部移除</span></p> <p><span style="font-family:'宋体';">移動</span>select<span style="font-family:'宋体';">:</span></p> <p>s1.addEventListener(‘click’,function(){</p> <p>s2.appendChild(this.options[s1.selectedIndex]);</p> <p>},false)</p> <p><span style="font-family:'宋体';">注:</span>s1<span style="font-family:'宋体';">中的選項會移動到</span><span style="font-family:Calibri;">s2</span><span style="font-family:'宋体';">中,即</span><span style="font-family:Calibri;">2</span><span style="font-family:'宋体';">中增</span><span style="font-family:Calibri;">1</span><span style="font-family:'宋体';">中減</span></p> <p>排列選項</p> <p><span style="font-family:'宋体';">選擇框提供了一個</span> index <span style="font-family:'宋体';">屬性,可以得到當前選項的索引值,和 </span><span style="font-family:Calibri;">selectedIndex </span><span style="font-family:'宋体';">的區別是,一個是選擇框對象的調用,一個是選項對象的調用。</span></p> <p>var option1 = city.options[1];</p> <p>city.insertBefore(option1, city.options[option1.index - 1]); //<span style="font-family:'宋体';">往下移動移位</span></p> <p>得到複選框中的選定值</p> <p>var love=’’;</p> <p>for (var i = 0; i < fm.love.length; i ++) {</p> <p>if (fm.love[i].checked == true) {</p> <p>love += fm.love[i].value;</p> <p>}</p> <p>}</p> <p>得到單選框中的選定值</p> <p>for (var i = 0; i < fm.sex.length; i ++) { //<span style="font-family:'宋体';">迴圈單選按鈕</span></p> <p>if (fm.sex[i].checked == true) { //<span style="font-family:'宋体';">遍曆每一個找出選中的那個</span></p> <p> return fm.sex[i].value; //<span style="font-family:'宋体';">得到值</span></p> <p>}</p> <p>}</p> <p>得到單選框中的默認選定值</p> <p>for (var i = 0; i < fm.sex.length; i ++) { //<span style="font-family:'宋体';">迴圈單選按鈕</span></p> <p>if (fm.sex[i]..defaultChecked== true) { //<span style="font-family:'宋体';">遍曆每一個找出選中的那個</span></p> <p> return fm.sex[i].value; //<span style="font-family:'宋体';">得到值</span></p> <p>}</p> <p>}</p> <p>37、錯誤語句</p> <p>try {</p> <p><span style="font-family:'宋体';">語句</span>1; //<span style="font-family:'宋体';">首先嘗試執行語句</span><span style="font-family:Calibri;">1</span></p> <p>}catch(e){</p> <p><span style="font-family:'宋体';">語句</span>2; //<span style="font-family:'宋体';">出錯執行語句</span><span style="font-family:Calibri;">2</span></p> <p>}finally{ //<span style="font-family:'宋体';">此句為可選句</span></p> <p><span style="font-family:'宋体';">語句</span>3; //<span style="font-family:'宋体';">不論是否發生錯誤,都執行語句</span><span style="font-family:Calibri;">3</span></p> <p>}</p> <p><span style="font-family:'宋体';">語句</span>2<span style="font-family:'宋体';">中使用:</span></p> <p>e.name; //<span style="font-family:'宋体';">錯誤的名稱</span></p> <p>e.message; //<span style="font-family:'宋体';">錯誤的信息</span></p> <p>finally<span style="font-family:'宋体';">防止出現異常後,無法進行下去,用於清理</span></p> <p>錯誤類型:</p> <p>1.Error //<span style="font-family:'宋体';">其他</span><span style="font-family:Calibri;">6</span><span style="font-family:'宋体';">類的父類,用於拋自定義錯誤</span></p> <p>2.EvalError //eval()<span style="font-family:'宋体';">使用與定義不同,實際中不可能產生</span></p> <p>3.RangeError //<span style="font-family:'宋体';">數值超範圍</span></p> <p>4.ReferenceError //<span style="font-family:'宋体';">訪問了不存在的變數</span></p> <p>5.SyntaxError //<span style="font-family:'宋体';">語法錯誤</span></p> <p>6.TypeError //<span style="font-family:'宋体';">類型不匹配</span></p> <p>7.URIError //encodeURI()<span style="font-family:'宋体';">與</span><span style="font-family:Calibri;">decodeURI()</span><span style="font-family:'宋体';">,由於此二者相容性強,此錯誤難見到</span></p> <p>try-catch<span style="font-family:'宋体';">語句消耗資源,負擔更大</span></p> <p><span style="font-family:'宋体';">流覽器相容:一般不用</span>try-catch<span style="font-family:'宋体';">,可用</span><span style="font-family:Calibri;">if</span></p> <p><span style="font-family:'宋体';">無法修改代碼,且不能用普通情況判斷時,可用</span>throw new Error(‘字串’)<span style="font-family:'宋体';">,拋出錯誤的解釋</span></p> <p>error <span style="font-family:'宋体';">事件是當某個 </span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">對象產生錯誤的時候觸發。</span></p> <p>window.addEventListener( 'error', function () {</p> <p>alert('<span style="font-family:'宋体';">發生錯誤啦!</span><span style="font-family:Calibri;">')</span></p> <p>},false);</p> <p>console<span style="font-family:'宋体';">方法:將信息發送到控制臺</span></p> <p>console.error(str); //<span style="font-family:'宋体';">將錯誤消息發送到控制臺,前有紅色帶×標誌</span></p> <p>console.info(str); //<span style="font-family:'宋体';">將信息發送到控制臺,前有白色帶信息號標誌</span></p> <p>console.log(str); //<span style="font-family:'宋体';">將日誌發送到控制臺,前有白色標誌</span></p> <p>console.warn(str); //<span style="font-family:'宋体';">將警告信息發送到控制臺,前有黃色帶感嘆號標誌</span></p> <p>38、cookie</p> <p>完整格式為:</p> <p>name=value; [expires=date]; [path=path]; [domain=somewhere.com]; [secure]</p> <p><span style="font-family:'宋体';">注釋:</span>expires<span style="font-family:'宋体';">失效時間,如果沒有聲明,則為流覽器關閉後即失效。若聲明,那麼時間到期後方能失效。</span></p> <p><span style="font-family:'宋体';">例如:</span>7<span style="font-family:'宋体';">天後失效</span></p> <p>var date = new Date(); //<span style="font-family:'宋体';">創建一個</span></p> <p>date.setDate(date.getDate() + 7);</p> <p>document.cookie = "user= " + encodeURIComponent('<span style="font-family:'宋体';">李炎恢</span><span style="font-family:Calibri;">') +";expires=" + date;</span></p> <p><span style="font-family:'宋体';">刪除</span> cookie <span style="font-family:'宋体';">:只要重新創建 </span><span style="font-family:Calibri;">cookie </span><span style="font-family:'宋体';">把時間設置當前時間之前即可:</span><span style="font-family:Calibri;">date.getDate() - 1 </span><span style="font-family:'宋体';">或 </span><span style="font-family:Calibri;">new Date(0)</span><span style="font-family:'宋体';">。</span></p> <p>path=path <span style="font-family:'宋体';">訪問路徑,當設置了路徑,那麼只有設置的那個路徑檔才可以訪問 </span><span style="font-family:Calibri;">cookie</span><span style="font-family:'宋体';">。</span></p> <p>domain=domain <span style="font-family:'宋体';">訪問功能變數名稱,用於限制只有設置的功能變數名稱才可訪問,若未設置,會默認限制為創建 </span><span style="font-family:Calibri;">cookie </span><span style="font-family:'宋体';">的功能變數名稱。</span></p> <p>secure <span style="font-family:'宋体';">安全設置,指明必須通過安全的通信通道來傳輸</span><span style="font-family:Calibri;">(HTTPS)</span><span style="font-family:'宋体';">才能獲取 </span><span style="font-family:Calibri;">cookie</span><span style="font-family:'宋体';">。</span></p> <p><span style="font-family:'宋体';">創建</span>cookie<span style="font-family:'宋体';">:</span></p> <p>function setCookie(name, value, expires, path, domain, secure) {</p> <p>var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);</p> <p>if (expires instanceof Date) {cookieText += '; expires=' + expires;}</p> <p>if (path) {cookieText += '; expires=' + expires;}</p> <p>if (domain) {cookieText += '; domain=' + domain;}</p> <p>if (secure) {cookieText += '; secure';}</p> <p>document.cookie = cookieText;</p> <p>}</p> <p><span style="font-family:'宋体';">讀取</span>cookie<span style="font-family:'宋体';">:</span></p> <p>function getCookie(name) {</p> <p>var cookieName = encodeURIComponent(name) + '=';</p> <p>var cookieStart = document.cookie.indexOf(cookieName);</p> <p>var cookieValue = null;</p> <p>if (cookieStart > -1) {</p> <p>var cookieEnd = document.cookie.indexOf(';', cookieStart);</p> <p>if (cookieEnd == -1) {</p> <p>cookieEnd = document.cookie.length;</p> <p>}</p> <p>cookieValue = decodeURIComponent(</p> <p>document.cookie.substring(cookieStart + cookieName.length, cookieEnd));</p> <p>}</p> <p>return cookieValue;</p> <p>}</p> <p><span style="font-family:'宋体';">刪除</span>cookie<span style="font-family:'宋体';">:</span></p> <p>function unsetCookie(name) {</p> <p>document.cookie = name + "= ; expires=" + new Date(0);</p> <p>}</p> <p>cookie<span style="font-family:'宋体';">の局限性</span></p> <p>1、<span style="font-family:'宋体';">每個特定的功能變數名稱下最多生成</span> 50 <span style="font-family:'宋体';">個 </span><span style="font-family:Calibri;">cookie</span></p> <p>2、cookie <span style="font-family:'宋体';">的最大大約為 </span><span style="font-family:Calibri;">4096 </span><span style="font-family:'宋体';">位元組</span><span style="font-family:Calibri;">(4k)</span><span style="font-family:'宋体';">,為了更好的相容性,一般不能超過 </span><span style="font-family:Calibri;">4095 </span><span style="font-family:'宋体';">位元組即可。</span></p> <p>3、cookie <span style="font-family:'宋体';">存儲在客戶端的文本檔,所以特別重要和敏感的數據是不建議保存在</span><span style="font-family:Calibri;">cookie </span><span style="font-family:'宋体';">的。比如銀行卡號,用戶密碼等。</span></p> <p>session</p> <p><span style="font-family:'宋体';">設置</span>session<span style="font-family:'宋体';">:</span></p> <p><span style="font-family:'宋体';">法一:</span>sessionStorage.setItem(‘name’,’man’);</p> <p><span style="font-family:'宋体';">法二:</span>sessionStorage.name=’man’;</p> <p><span style="font-family:'宋体';">讀取</span>session</p> <p><span style="font-family:'宋体';">法一:</span>sessionStorage.getItem(‘name’);</p> <p><span style="font-family:'宋体';">法二:</span>sessionStorage.name;</p> <p><span style="font-family:'宋体';">法三:</span>localStorage.getItem(‘name’);</p> <p><span style="font-family:'宋体';">法四:</span>localStorage.name</p> <p><span style="font-family:'宋体';">移出</span>session</p> <p><span style="font-family:'宋体';">法一:</span>sessionStorage.removeItem(‘name’);</p> <p><span style="font-family:'宋体';">法二:</span>localStorage.removeItem(‘name’);</p> <p>39、XML<span style="font-family:'宋体';">: </span><span style="font-family:Calibri;">XML </span><span style="font-family:'宋体';">技術一度成為存儲和傳輸結構化數據的標準。可以理解成一個微型的結構化的資料庫,保存一些小型數據用的。</span></p> <p><span style="font-family:'宋体';">創建</span>XML<span style="font-family:'宋体';">:</span></p> <p>var xmlDom = document.implementation.createDocument('','root',null); //<span style="font-family:'宋体';">創建 </span><span style="font-family:Calibri;">xmlDom</span></p> <p>var user = xmlDom.createElement('user'); //<span style="font-family:'宋体';">創建 </span><span style="font-family:Calibri;">user </span><span style="font-family:'宋体';">元素</span></p> <p>xmlDom.getElementsByTagName('root')[0].appendChild(user); //<span style="font-family:'宋体';">添加到 </span><span style="font-family:Calibri;">root </span><span style="font-family:'宋体';">下</span></p> <p>var value = xmlDom.createTextNode('Lee'); //<span style="font-family:'宋体';">創建文本</span></p> <p>xmlDom.getElementsByTagName('user')[0].appendChild(value); //<span style="font-family:'宋体';">添加到 </span><span style="font-family:Calibri;">user </span><span style="font-family:'宋体';">下</span></p> <p>alert(xmlDom.getElementsByTagName('user')[0].tagName); //<span style="font-family:'宋体';">獲取</span><span style="font-family:Calibri;">user[0]</span><span style="font-family:'宋体';">的名字</span></p> <p>alert(xmlDom.getElementsByTagName('user')[0].firstChild.nodeValue); //<span style="font-family:'宋体';">獲取</span><span style="font-family:Calibri;">user[0]</span><span style="font-family:'宋体';">第一個節點的值</span></p> <p><span style="font-family:'宋体';">注釋:</span>createDocument()<span style="font-family:'宋体';">方法需要傳遞三個參數,命名空間,根標籤名和文檔聲明,由於</span><span style="font-family:Calibri;">JavaScript </span><span style="font-family:'宋体';">管理命名空間比較困難,所以留空即可。文檔聲明一般根本用不到,直接 </span><span style="font-family:Calibri;">null </span><span style="font-family:'宋体';">即可。命名空間和文檔聲明留空,表示創建 </span><span style="font-family:Calibri;">XMLDOM </span><span style="font-family:'宋体';">對象不需要命名空間和文檔聲明。</span></p> <p><span style="font-family:'宋体';">載入</span>XML<span style="font-family:'宋体';">:</span></p> <p>//<span style="font-family:'宋体';">同步情況下</span></p> <p>var xmlDom = document.implementation.createDocument('','root',null);</p> <p>xmlDom.async = false;</p> <p>xmlDom.load('test.xml');</p> <p>alert(xmlDom.getElementsByTagName('user')[0].tagName);</p> <p>//<span style="font-family:'宋体';">非同步情況下</span></p> <p>var xmlDom = document.implementation.createDocument('','root',null);</p> <p>xmlDom.async = true;</p> <p>xmlDom.addEventListener( 'load', function () { //<span style="font-family:'宋体';">非同步直接用 </span><span style="font-family:Calibri;">onload </span><span style="font-family:'宋体';">即可</span></p> <p>alert(this.getElementsByTagName('user')[0].tagName);</p> <p>},false);</p> <p>xmlDom.load('test.xml');</p> <p>PS<span style="font-family:'宋体';">:不管在同步或非同步來獲取 </span><span style="font-family:Calibri;">load()</span><span style="font-family:'宋体';">方法只有 </span><span style="font-family:Calibri;">Mozilla </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">Firefox </span><span style="font-family:'宋体';">才能支持,只不過新版</span></p> <p><span style="font-family:'宋体';">的</span> Opera <span style="font-family:'宋体';">也是支持的,其他流覽器則不支持。</span></p> <p>序列化:</p> <p>var serializer=new XMLSerialzer();</p> <p>var xml=serializer.serializerToString(xmlDom);</p> <p>解析錯誤</p> <p><span style="font-family:'宋体';">在</span> DOM2 <span style="font-family:'宋体';">級處理 </span><span style="font-family:Calibri;">XML </span><span style="font-family:'宋体';">發生錯誤時,並沒特有對象來捕獲錯誤,而是直接生成另一個錯誤的 </span><span style="font-family:Calibri;">XML </span><span style="font-family:'宋体';">文檔,通過這個文檔可以獲取錯誤信息。</span></p> <p>var errors = xmlDom.getElementsByTagName('parsererror');</p> <p>if (errors.length > 0) {</p> <p>throw new Error('XML <span style="font-family:'宋体';">格式有誤:</span><span style="font-family:Calibri;">' + errors[0].textContent);</span></p> <p>}</p> <p>PS<span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">errors[0].firstChild.nodeValue </span><span style="font-family:'宋体';">也可以使用 </span><span style="font-family:Calibri;">errors[0].textContent </span><span style="font-family:'宋体';">來代替。</span></p> <p>39<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">XPath </span><span style="font-family:'宋体';">是一種節點查找手段,對比之前使用標準 </span><span style="font-family:Calibri;">DOM </span><span style="font-family:'宋体';">去查找 </span><span style="font-family:Calibri;">XML </span><span style="font-family:'宋体';">中的節點方式,大</span></p> <p>大降低了查找難度,方便開發者使用。</p> <p><span style="font-family:'宋体';">創建</span>XPath<span style="font-family:'宋体';">:</span></p> <p>//<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">XPathEvaluator </span><span style="font-family:'宋体';">對象創建 </span><span style="font-family:Calibri;">XPathResult</span></p> <p>var eva = new XPathEvaluator();</p> <p>var result = eva.evaluate('root/user', xmlDom, null,XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);</p> <p>alert(result);</p> <p>//<span style="font-family:'宋体';">使用上下文節點對象</span><span style="font-family:Calibri;">(xmlDom)</span><span style="font-family:'宋体';">創建 </span><span style="font-family:Calibri;">XPathResult</span></p> <p>var result = xmlDom.evaluate('root/user', xmlDom, null,XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);</p> <p>alert(result);</p> <p>evaluate <span style="font-family:'宋体';">方法有五個屬性:</span><span style="font-family:Calibri;">1.XPath </span><span style="font-family:'宋体';">路徑、</span><span style="font-family:Calibri;">2.</span><span style="font-family:'宋体';">上下文節點對象、</span><span style="font-family:Calibri;">3.</span><span style="font-family:'宋体';">命名空間求解器</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">通常是 </span><span style="font-family:Calibri;">null)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">4.</span><span style="font-family:'宋体';">返回結果類型、</span><span style="font-family:Calibri;">5 </span><span style="font-family:'宋体';">保存結果的 </span><span style="font-family:Calibri;">XPathResult</span><span style="font-family:'宋体';">對象</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">通常是 </span><span style="font-family:Calibri;">null)</span><span style="font-family:'宋体';">。</span></p> <p>1.<span style="font-family:'宋体';">獲取一個單一節點</span></p> <p>var result = xmlDom.evaluate('root/user', xmlDom, null,XPathResult.FIRST_ORDERED_NODE_TYPE, null);</p> <p>if (result !== null) {</p> <p>alert(result.singleNodeValue.tagName); //singleNodeValue <span style="font-family:'宋体';">屬性得到節點對象</span></p> <p>}</p> <p>2.<span style="font-family:'宋体';">獲取節點集合</span></p> <p>var result = xmlDom.evaluate('root/user', xmlDom, null,XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);</p> <p>var nodes = [];</p> <p>if (result !== null) {</p> <p>while ((node = result.iterateNext()) !== null) { //<span style="font-family:'宋体';">集合中遍曆取值,自動遍曆,不為</span><span style="font-family:Calibri;">null</span><span style="font-family:'宋体';">,則返回值</span></p> <p>nodes.push(node);</p> <p>}</p> <p>}</p> <p>40<span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">:</span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">和 </span><span style="font-family:Calibri;">XML </span><span style="font-family:'宋体';">類型,都是一種結構化的數據表示方式。很多語言都可以對 </span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">進行解析和序列化。</span></p> <p>JSON <span style="font-family:'宋体';">的語法可以表示三種類型的值:</span></p> <p>1.<span style="font-family:'宋体';">簡單值:可以在 </span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">中表示字串、數值、布爾值和 </span><span style="font-family:Calibri;">null</span><span style="font-family:'宋体';">。但 </span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">不支持 </span><span style="font-family:Calibri;">JavaScript</span><span style="font-family:'宋体';">中的特殊值 </span><span style="font-family:Calibri;">undefined</span><span style="font-family:'宋体';">。</span></p> <p>2.<span style="font-family:'宋体';">對象:顧名思義。</span></p> <p>3.<span style="font-family:'宋体';">數組:顧名思義。</span></p> <p>JSON <span style="font-family:'宋体';">中的對象表示法需要加上雙引號,並且不存在賦值運算和分號:</span><span style="font-family:Calibri;">//</span><span style="font-family:'宋体';">使用雙引號,否則轉換會出錯</span></p> <p>{"name" : "Lee", "age" : 100}</p> <p>JSON <span style="font-family:'宋体';">中的數組表示法同樣沒有變數賦值和分號:</span></p> <p>[100, "Lee", true]</p> <p>JSON<span style="font-family:'宋体';">中常用的形式:複雜形式</span></p> <p>[{"title" : "a", "num" : 1},{"title" : "b", "num" : 2},{"title" : "c", "num" : 3}]</p> <p><span style="font-family:'宋体';">模擬加載</span> JSON <span style="font-family:'宋体';">文本檔的數據,並且賦值給變數。</span></p> <p>var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'</p> <p>var json = JSON.parse(box); //<span style="font-family:'宋体';">不是雙引號,會報錯</span></p> <p>alert(json);</p> <p><span style="font-family:'宋体';">普通數組:</span>JSON<span style="font-family:'宋体';">比普通數組多了兩邊的雙引號</span></p> <p>var box = [{name : 'a', age : 1},{name : 'b', age : 2}]; //JS<span style="font-family:'宋体';">原生值</span></p> <p>var json = JSON.stringify(box); //<span style="font-family:'宋体';">轉換成 </span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">字串</span></p> <p>alert(json); //<span style="font-family:'宋体';">自動雙引號</span></p> <p>JSON.stringify();<span style="font-family:'宋体';">第二個參數可以是一個數組,也可以是一個函數,用於過濾結果。第三個參數則表示是否在 </span><span style="font-family:Calibri;">JSON </span><span style="font-family:'宋体';">字串中保留縮進。</span></p> <p>var box = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}];</p> <p>var json = JSON.stringify(box, ['name', 'age'], 4); //<span style="font-family:'宋体';">取</span><span style="font-family:Calibri;">box</span><span style="font-family:'宋体';">中的</span><span style="font-family:Calibri;">name</span><span style="font-family:'宋体';">和</span><span style="font-family:Calibri;">age</span><span style="font-family:'宋体';">並縮進</span><span style="font-family:Calibri;">4</span><span style="font-family:'宋体';">個字元</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">較上一層</span><span style="font-family:Calibri;">)</span></p> <p>alert(json); //<span style="font-family:'宋体';">較上兩層縮進</span><span style="font-family:Calibri;">8</span><span style="font-family:'宋体';">個字元</span></p> <p>PS<span style="font-family:'宋体';">:如果不需要保留縮進,則不填即可;如果不需要過濾結果,但又要保留縮進,則講過濾結果的參數設置為 </span><span style="font-family:Calibri;">null</span><span style="font-family:'宋体';">。如果採用函數,可以進行複雜的過濾。如果</span><span style="font-family:Calibri;">4</span><span style="font-family:'宋体';">改成</span>’--’<span style="font-family:'宋体';">,則較上一層為</span>--<span style="font-family:'宋体';">,上兩層為</span><span style="font-family:Calibri;">----</span></p> <p>複雜過濾</p> <p>var box = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}];</p> <p>var json = JSON.stringify(box, function (key, value) {</p> <p>switch (key) {</p> <p>case 'name' :</p> <p>return 'Mr. ' + value;</p> <p>case 'age' :</p> <p>return value + '<span style="font-family:'宋体';">歲</span><span style="font-family:Calibri;">';</span></p> <p>default :</p> <p>return value;</p> <p>}</p> <p>}, 4);</p> <p>toJSON<span style="font-family:'宋体';">過濾:此過濾優先順序最高</span></p> <p>var box = [{name : 'a', age : 1, height : 177, toJSON : function () {return this.name;}}, //<span style="font-family:'宋体';">只能獲取到</span><span style="font-family:Calibri;">name</span></p> <p>{name : 'b',age : 2, height : 188, toJSON : function () {return this.name;}}];</p> <p>var json = JSON.stringify(box);</p> <p>alert(json);</p> <p>JSON.parse()<span style="font-family:'宋体';">過濾:同</span><span style="font-family:Calibri;">JSON.stringify()</span><span style="font-family:'宋体';">,只不過其轉換的是帶</span>”<span style="font-family:'宋体';">的</span>JSON<span style="font-family:'宋体';">字串,而</span><span style="font-family:Calibri;">JSON.stringify()</span><span style="font-family:'宋体';">轉的是普通字串。</span></p> <p>var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]';</p> <p>var json = JSON.parse(box, function (key, value) {</p> <p>if (key == 'name') {</p> <p>return 'Mr. ' + value;</p> <p>} else {</p> <p>return value;</p> <p>}</p> <p>});</p> <p>alert(json[0].name);</p> <p>41、Ajax<span style="font-family:'宋体';">:是 </span><span style="font-family:Calibri;">Asynchronous JavaScript + XML </span><span style="font-family:'宋体';">的簡寫,</span><span style="font-family:Calibri;">x </span><span style="font-family:'宋体';">技術核心是 </span><span style="font-family:Calibri;">XMLHttpRequest </span><span style="font-family:'宋体';">對象</span><span style="font-family:Calibri;">(</span><span style="font-family:'宋体';">簡稱 </span><span style="font-family:Calibri;">XHR)</span><span style="font-family:'宋体';">,提供了向服務器發送請求和解析服務器回應提供了流暢的界面。能夠以非同步方式從服務器獲取更多的信息,這就意味著,用戶只要觸發某一事件,在不刷新網頁的情況下,更新服務器最新的數據。雖然 </span><span style="font-family:Calibri;">Ajax </span><span style="font-family:'宋体';">中的 </span><span style="font-family:Calibri;">x </span><span style="font-family:'宋体';">代表的是 </span><span style="font-family:Calibri;">XML</span><span style="font-family:'宋体';">,但 </span><span style="font-family:Calibri;">Ajax </span><span style="font-family:'宋体';">通信和數據格式無關,也就是說這種技術不一定使用 </span><span style="font-family:Calibri;">XML</span><span style="font-family:'宋体';">。</span></p> <p><span style="font-family:'宋体';">創建</span>Ajax</p> <p>var xhr = new XMLHttpRequest();</p> <p>準備</p> <p><span style="font-family:'宋体';">在使用</span> XHR <span style="font-family:'宋体';">對象時,先必須調用 </span><span style="font-family:Calibri;">open()</span><span style="font-family:'宋体';">方法,它接受三個參數:要發送的請求類型</span><span style="font-family:Calibri;">(get</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">post)</span><span style="font-family:'宋体';">、請求的 </span><span style="font-family:Calibri;">URL </span><span style="font-family:'宋体';">和表示是否非同步。</span></p> <p>xhr.open('get', 'demo.php', false); //<span style="font-family:'宋体';">對於 </span><span style="font-family:Calibri;">demo.php </span><span style="font-family:'宋体';">的 </span><span style="font-family:Calibri;">get </span><span style="font-family:'宋体';">請求,</span><span style="font-family:Calibri;">false </span><span style="font-family:'宋体';">同步</span></p> <p><span style="font-family:'宋体';">發送:</span>xhr.send(null); //<span style="font-family:'宋体';">發送請求,如果不需要則,必須填 </span><span style="font-family:Calibri;">null</span><span style="font-family:'宋体';">。比如</span><span style="font-family:Calibri;">get</span><span style="font-family:'宋体';">不需要</span></p> <p>xhr.responseText //<span style="font-family:'宋体';">作為回應主體被返回的文本</span></p> <p>xhr.responseXML //<span style="font-family:'宋体';">如果回應主體內容類型是</span><span style="font-family:Calibri;">"text/xml"</span><span style="font-family:'宋体';">或</span><span style="font-family:Calibri;">"application/xml"</span><span style="font-family:'宋体';">,則返回包含回應數據的 </span><span style="font-family:Calibri;">XML DOM </span><span style="font-family:'宋体';">文檔</span></p> <p>xhr.status //<span style="font-family:'宋体';">返回回應的 </span><span style="font-family:Calibri;">HTTP </span><span style="font-family:'宋体';">狀態,只讀</span></p> <p>xhr.statusText //<span style="font-family:'宋体';">返回</span><span style="font-family:Calibri;">HTTP </span><span style="font-family:'宋体';">狀態的說明,只讀</span></p> <p>HTTP(status) <span style="font-family:'宋体';">狀態碼</span> <span style="font-family:'宋体';">狀態字串</span> <span style="font-family:'宋体';">說明</span>(statusText)</p> <p>200 OK 服務器成功返回了頁面</p> <p>400 Bad Request 語法錯誤導致服務器不識別</p> <p>401 Unauthorized 請求需要用戶認證</p> <p>404 Not found <span style="font-family:'宋体';">指定的</span> URL <span style="font-family:'宋体';">在服務器上找不到</span></p> <p>500 Internal Server Error 服務器遇到意外錯誤,無法完成請求</p> <p>503 ServiceUnavailable 由於服務器超載或維護導致無法完成請求</p> <p>readystatechange<span style="font-family:'宋体';">事件:</span></p> <p>xhr.onreadystatechange = function () {</p> <p>if (xhr.readyState == 4) {</p> <p>if (xhr.status == 200) {</p> <p>alert(xhr.responseText);</p> <p>} else {</p> <p>alert('<span style="font-family:'宋体';">數據返回失敗!狀態代碼:</span><span style="font-family:Calibri;">' + xhr.status + '</span><span style="font-family:'宋体';">狀態信息:</span><span style="font-family:Calibri;">' + xhr.statusText);</span></p> <p>}</p> <p>}</p> <p><span style="font-family:'宋体';">使用非同步調用的時候,</span> <span style="font-family:'宋体';">需要觸發</span> readystatechange,<span style="font-family:'宋体';">檢測</span><span style="font-family:Calibri;">readyState </span><span style="font-family:'宋体';">屬性即可。這個屬性有五個值:</span></p> <p><span style="font-family:'宋体';">值</span>(readyState) <span style="font-family:'宋体';">狀態</span> 說明</p> <p>0 <span style="font-family:'宋体';">未初始化</span> <span style="font-family:'宋体';">尚未調用</span> open()<span style="font-family:'宋体';">方法</span></p> <p>1 <span style="font-family:'宋体';">啟動</span> <span style="font-family:'宋体';">已經調用</span> open()<span style="font-family:'宋体';">方法,但尚未調用 </span><span style="font-family:Calibri;">send()</span><span style="font-family:'宋体';">方法</span></p> <p>2 <span style="font-family:'宋体';">發送</span> <span style="font-family:'宋体';">已經調用</span> send()<span style="font-family:'宋体';">方法,但尚未接受回應</span></p> <p>3 <span style="font-family:'宋体';">接受</span> 已經接受到部分回應數據</p> <p>4 <span style="font-family:'宋体';">完成</span> 已經接受到全部回應數據,而且可以使用</p> <p>回應頭</p> <p>alert(xhr.getResponseHeader('Content-Type')); //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">getResponseHeader()</span><span style="font-family:'宋体';">獲取單個回應頭信息</span></p> <p>alert(xhr.getAllResponseHeaders()); //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">getAllResponseHeaders()</span><span style="font-family:'宋体';">獲取整個回應頭信息</span></p> <p>xhr.setRequestHeader('MyHeader', 'Lee');  //<span style="font-family:'宋体';">使用 </span><span style="font-family:Calibri;">setRequestHeader()</span><span style="font-family:'宋体';">設置單個請求頭信息,放在 </span><span style="font-family:Calibri;">open </span><span style="font-family:'宋体';">方法之後,</span><span style="font-family:Calibri;">send </span><span style="font-family:'宋体';">方法之前</span></p> <p>GET<span style="font-family:'宋体';">請求:</span><span style="font-family:Calibri;">GET </span><span style="font-family:'宋体';">最多比 </span><span style="font-family:Calibri;">POST </span><span style="font-family:'宋体';">快兩倍。</span></p> <p>xhr.open('get', 'demo.php?rand=' + Math.random() + '&name=Koo', true);</p> <p>xhr.send(null);</p> <p>//<span style="font-family:'宋体';">一個通用的 </span><span style="font-family:Calibri;">URL </span><span style="font-family:'宋体';">提交函數</span></p> <p>function addURLParam(url, name, value) {</p> <p>url += (url.indexOf('?') == -1 ? '?' : '&'); //<span style="font-family:'宋体';">判斷的 </span><span style="font-family:Calibri;">url </span><span style="font-family:'宋体';">是否有已有參數</span></p> <p>url += encodeURIComponent(name) + '=' + encodeURIComponent(value);</p> <p>return url;</p> <p>}</p> <p>PS<span style="font-family:'宋体';">:當沒有 </span><span style="font-family:Calibri;">encodeURIComponent()</span><span style="font-family:'宋体';">方法時,在一些特殊字元比如“</span><span style="font-family:Calibri;">&</span><span style="font-family:'宋体';">”,會出現錯誤導致無法獲取</span></p> <p>POST<span style="font-family:'宋体';">請求:</span></p> <p>xhr.open('post', 'demo.php', true);</p> <p>xhr.send('name=Lee&age=100');</p> <p><span style="font-family:'宋体';">模擬表單提交:讓其可提交,否則只有表單提交放有用,放在</span>send<span style="font-family:'宋体';">之前</span></p> <p>xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');</p> <p>JSON<span style="font-family:'宋体';">訪問回調值:</span></p> <p>var box = JSON.parse(xhr.responseText);</p> <p>42、後續小問題</p> <p>Call<span style="font-family:'宋体';">用法問題:</span></p> <p>fn.call(1,2,3,4,5)</p> <p>function fn(a,b,c){</p> <p>//<span style="font-family:'宋体';">則</span><span style="font-family:Calibri;">this=1</span><span style="font-family:'宋体';">,</span><span style="font-family:Calibri;">a=2</span><span style="font-family:'宋体';">,</span><span style="font-family:Calibri;">b=3</span><span style="font-family:'宋体';">,</span><span style="font-family:Calibri;">c=4</span><span style="font-family:'宋体';">。即第一個參數代表作用域</span></p> <p>}</p> <p>中括弧:</p> <p>總是可以代替點,但點不一定;</p> <p>[]<span style="font-family:'宋体';">可以用字符串變數、純數字、</span><span style="font-family:Calibri;">JS</span><span style="font-family:'宋体';">保留字和關鍵字做屬性名,但點不能。</span></p> <p>JS<span style="font-family:'宋体';">中</span><span style="font-family:Calibri;">function(e)</span><span style="font-family:'宋体';">,</span><span style="font-family:Calibri;">e</span><span style="font-family:'宋体';">用來監聽,</span><span style="font-family:Calibri;">e</span><span style="font-family:'宋体';">不寫進去則無法監聽,不能獲取滑鼠之類的狀態,也可換成別的字母。</span></p> <p>e=arguments[0];</p> <p>插件問題:把函數和函數名寫入原型;</p> <p>Base.prototype.extend=function(name,fn){ //name<span style="font-family:'宋体';">為原型中要用的名,</span><span style="font-family:Calibri;">fn</span><span style="font-family:'宋体';">為外函數名</span></p> <p>Base.prototype[name]=fn;</p> <p>}</p> <p><span style="font-family:'宋体';">流覽器加載順序:前</span>4<span style="font-family:'宋体';">快,</span><span style="font-family:Calibri;">5</span><span style="font-family:'宋体';">慢,</span><span style="font-family:Calibri;">window.load()</span><span style="font-family:'宋体';">需要全部加載完才執行。</span></p> <p>1、HTML<span style="font-family:'宋体';">解析</span></p> <p>2、外部腳本和樣式加載</p> <p>3、腳本在文檔內解析並執行</p> <p>4、HTML DOM<span style="font-family:'宋体';">完全構建</span></p> <p>5、圖片和外部內容加載</p> <p>6、加載完畢</p> <p><span style="font-family:'宋体';">上下按鍵</span>keycode<span style="font-family:'宋体';">判斷:</span><span style="font-family:Calibri;">40(</span><span style="font-family:'宋体';">上</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">38(</span><span style="font-family:'宋体';">下</span><span style="font-family:Calibri;">)</span><span style="font-family:'宋体';">、</span><span style="font-family:Calibri;">13(</span><span style="font-family:'宋体';">回車</span><span style="font-family:Calibri;">)</span></p> <p><span style="font-family:'宋体';">清理:把</span>length<span style="font-family:'宋体';">設為</span><span style="font-family:Calibri;">0</span><span style="font-family:'宋体';">即可</span></p> <p><span style="font-family:'宋体';">延時加載:等圖片與上邊框與滾動條下邊框相同時,再使用</span>opacity<span style="font-family:'宋体';">漸漸顯示。</span></p> </div> <p>转载于:https://www.cnblogs.com/mandongpiaoxue/p/7492776.html</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1293068892268208128"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(JavaScript:基礎知識)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835509897106649088.htm" title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div> </li> <li><a href="/article/1835498925755297792.htm" title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a> <span class="text-muted">STU学生网页设计</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a> <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div> </li> <li><a href="/article/1835496149843275776.htm" title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a> <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div> </li> <li><a href="/article/1835496148601761792.htm" title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div> </li> <li><a href="/article/1835492740536823808.htm" title="node.js学习" target="_blank">node.js学习</a> <span class="text-muted">小猿L</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行</div> </li> <li><a href="/article/1835480678255390720.htm" title="2019-01-19" target="_blank">2019-01-19</a> <span class="text-muted">王小康KK</span> <div>姓名:王康公司:扬州市方圆建筑工程有限公司2018年3月16日~3月18日上海361期《六项精进》感谢二组学员【日精进打卡第307天】【知~学习】《六项精进》大纲3遍共862遍《大学》通篇3遍共860遍《六项精进》全书40页【经典名句】思想决定行为,行为决定习惯,习惯决定性格,性格决定命运。【行~实践】一、修身:(对自己个人)1、践行六项精进的理念。二、齐家:(对家庭和家人)1、和女朋友视频聊天。</div> </li> <li><a href="/article/1835472022247927808.htm" title="继续《时光音乐会》" target="_blank">继续《时光音乐会》</a> <span class="text-muted">湘梅子</span> <div>平安夜,与我无关。晚饭后陪孙子玩,直到他入睡。回家,看期待的周五《时光音乐会》。今天的庄主是郁可唯。出道十多年,竟然为影视唱了八十多首歌。她的歌声很温暖,有时还很空灵,声音处理很细腻,听起来很享受。原来《知否,知否》是她原唱,当时电视剧很火,歌我也学会了。我也喜欢她的《路过人间》歌友们谈笑风生,我这个观众也不时会心笑着。每次看完这个节目,总是意犹未尽。也只有这个节目,我先生有兴趣跟我一起看完,还总</div> </li> <li><a href="/article/1835467782687387648.htm" title="linux 发展史" target="_blank">linux 发展史</a> <span class="text-muted">种树的猴子</span> <a class="tag" taget="_blank" href="/search/%E5%86%85%E6%A0%B8/1.htm">内核</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>linux发展史说明此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。目录一、Linux发展背景二、UINIX的诞生三、UNIX的重要分支-BSD的诞生四、Minix的诞生五、GNU与Free</div> </li> <li><a href="/article/1835454439767502848.htm" title="2019-03-24" target="_blank">2019-03-24</a> <span class="text-muted">李飞720</span> <div>姓名:李飞企业名称:临沂鑫道食品有限公司组别373期利他1组日精进打卡第338天】【知~学习】1、阿米巴经营一段2、活用人才1段3、活法、一段【行~实践】一、修身:读书、抽烟减量、俯卧撑个跑步3公里二、齐家、劝说老爸与姑姑和好三、建功、业务洽谈【经典名句分享】1、依据原理原则追求事物的本质,以“作为人,何谓正确”进行判断2、经营者必须为员工物质和精神两方面的幸福殚精竭虑,倾尽全力,必须超脱私心,让</div> </li> <li><a href="/article/1835448718275473408.htm" title="2019-03-10" target="_blank">2019-03-10</a> <span class="text-muted">Daisy倾夕</span> <div>生命总是需要一些允许和放纵的释怀,经常熬夜时是对自己有一份责怪,今日却又一份惊喜感!偶尔允许了自己做了一件很久没做的事情会很开心,减肥的时候会因为有一餐对食物欲望内心匮乏的填补而感到开心,偶尔的总是惊喜,长期也容易成为负担,那如何在这个长期的过程中又不失惊喜,我想应该是探索和变化的永恒,允许并好,首先先带上觉知!</div> </li> <li><a href="/article/1835448239864770560.htm" title="JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)" target="_blank">JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数</div> </li> <li><a href="/article/1835445674624249856.htm" title="2021-11-18" target="_blank">2021-11-18</a> <span class="text-muted">安安303</span> <div>刘红雅中原焦点团队分享第135天筑基第4课社会心理学接上一课,心理现象。需要和动机所有的动机行为受需要的影响,现在的孩子很多方面不需要,是因为得到的太多需要使机体内部不平衡的状态,现在很多需要满足的过多,是“厌”,孩子要越用越有用,没有用到自己,自己没有价值感成就感,他就不需要开发自己的潜力。对自己和孩子的生活留白不断的学习成长,实现自己。所有有情绪的地方是触动了需求,需求没有被满足,当一个人知道</div> </li> <li><a href="/article/1835443696431099904.htm" title="笋丁网页自动回复机器人V3.0.0免授权版源码" target="_blank">笋丁网页自动回复机器人V3.0.0免授权版源码</a> <span class="text-muted">希希分享</span> <a class="tag" taget="_blank" href="/search/%E8%BD%AF%E5%B8%8C%E7%BD%9158soho_cn/1.htm">软希网58soho_cn</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E8%B5%84%E6%BA%90/1.htm">源码资源</a><a class="tag" taget="_blank" href="/search/%E7%AC%8B%E4%B8%81%E7%BD%91%E9%A1%B5%E8%87%AA%E5%8A%A8%E5%9B%9E%E5%A4%8D%E6%9C%BA%E5%99%A8%E4%BA%BA/1.htm">笋丁网页自动回复机器人</a> <div>笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安</div> </li> <li><a href="/article/1835429669504118784.htm" title="2019-04-10" target="_blank">2019-04-10</a> <span class="text-muted">shuaigefeng</span> <div>姓名:王林锋企业名称:三亚蔚蓝时代实业有限公司组别:420期努力6组【日精进打卡251天】【知~学习、诵读】《六项精进》2遍,累计256遍《大学》2遍,累计220遍【经典分享】1、想过成功、想过失败、也想过放弃。【行~实践】一、修身:(对自己个人)1.拍打腿部两侧50下,舌顶上颚50下。2.坚持诵读、阅读。3.坚持锻炼、按时睡觉起床。4.控制健康饮食,饭后走动30分钟。5.每天反省自己的思想和行为</div> </li> <li><a href="/article/1835428948339683328.htm" title="JavaScript `Map` 和 `WeakMap`详细解释" target="_blank">JavaScript `Map` 和 `WeakMap`详细解释</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E7%94%9F%E6%96%B9%E6%B3%95/1.htm">原生方法</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键</div> </li> <li><a href="/article/1835425102443933696.htm" title="久梦忽醒惊回头" target="_blank">久梦忽醒惊回头</a> <span class="text-muted">山雾生</span> <div>一直以来,我都觉得这人生的二十个年头,其实只是一场梦,像是午睡过久,陷入梦魇,怎么也挣扎不出,偶尔迷茫惊醒,却也起不得身,只是空洞的发愣,而后复又辗转入梦。有些时候,觉得自己似乎醒了,可看了看陌生的环境,陌生的人,又觉得,睡得过久,世事变迁,已经回不去入睡之时。我好像是在某一天,突然就觉得人生没了意义,便昏昏沉沉入了这个梦,看不明白哪里是梦中,哪里是现实,或许偶尔是清醒的,可更多时候是沉睡的,我知</div> </li> <li><a href="/article/1835419870070665216.htm" title="切换淘宝最新npm镜像源是" target="_blank">切换淘宝最新npm镜像源是</a> <span class="text-muted">hai40587</span> <a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步骤,并附上最新的镜像地址(截至回答时)。一、了解npm镜像源npm(NodePackageManager)是JavaScript的包管理器,用于安装、更新和管理项目依赖。由于npm官方仓库</div> </li> <li><a href="/article/1835417096570368000.htm" title="毕业论文附录一般都写什么?大学生写论文是干嘛用的" target="_blank">毕业论文附录一般都写什么?大学生写论文是干嘛用的</a> <span class="text-muted">写个原创论文</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/AI%E5%86%99%E4%BD%9C/1.htm">AI写作</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a> <div>毕业论文的附录通常包含一些在正文中不便于展示或详细阐述的内容,但对理解论文整体又具有重要意义的资料。具体来说,附录可能包含以下内容:AI论文,免费大纲,10分钟3万字,查重高于15%退费,支持数据图表!!AIPaperPass-AI论文写作指导平台AIPaperPass是AI原创论文写作平台,免费千字大纲,5分钟生成3万字初稿,提供答辩汇报ppt、开题报告、任务书等,40篇真实中英文知网参考文献,</div> </li> <li><a href="/article/1835402857742954496.htm" title="TC27x启动过程(2)-TC277" target="_blank">TC27x启动过程(2)-TC277</a> <span class="text-muted">赞哥哥s</span> <a class="tag" taget="_blank" href="/search/TC277%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">TC277学习笔记</a><a class="tag" taget="_blank" href="/search/gnu/1.htm">gnu</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a> <div>接上文,继续学习TC277的启动过程。分析启动函数有关用的寄存器说明,参考文章TC27x寄存器学习目录TC27x寄存器学习start函数分析isync汇编指令(同步指令)dsync汇编指令(同步数据),1清除endinit2设置中断堆栈3启用对系统全局寄存器的写访问4初始化SDA基指针5关闭对系统全局寄存器的写访问6关闭看门狗,恢复Endinit位7初始化CSA8初始化ram,拷贝rom数据到ra</div> </li> <li><a href="/article/1835397407412678656.htm" title="正常化的同理" target="_blank">正常化的同理</a> <span class="text-muted">迷你旅客</span> <div>郑璐宜昌焦点网络中级七期原创持续分享第214天SBFT的同理方式除了反应来访者的感受之外,更会暗示事情有其他可能性的存在,以试图动摇来访者的负面感受,改变她的自我觉知。其原则包括:1、将来访者所说的内容以“过去式”的动词(如:加上“曾经”)进行回应,暗示现在的负向可以成为过去。2、把来访者所用的含绝对性、强烈性的字眼,换为严重程度较低或发生比例较少的用字。例如,来访者说:“每天总是觉得快要发疯了。</div> </li> <li><a href="/article/1835390273258090496.htm" title="是“王者荣耀”还是“王者农药”?" target="_blank">是“王者荣耀”还是“王者农药”?</a> <span class="text-muted">颓废思物者</span> <div>近些日子,王者又双叒叕火了。而腾讯公司的老总马化腾也跟着他的游戏在人声鼎沸的汪洋中飘荡——我最先是在公众号文章《腾讯推出游戏未保“双减双打”新措施》中看见了未成年人将减少在线时长限制,非节假日从1.5小时降低至1小时,节假日从3小时减到2小时。心中不由掀起一丝波澜:又有家长对游戏出手了。不过大家心中你知我知,在这场纷争中,必定也带着市场的挤压和变化。除去这些市场变化,我们来探讨几个问题:1.没有游</div> </li> <li><a href="/article/1835383919906746368.htm" title="高性能javascript--算法和流程控制" target="_blank">高性能javascript--算法和流程控制</a> <span class="text-muted">海淀萌狗</span> <div>-for,while和do-while性能相当-避免使用for-in循环,==除非遍历一个属性量未知的对象==es5:for-in遍历的对象便不局限于数组,还可以遍历对象。原因:for-in每次迭代操作会同时搜索实例或者原型属性,for-in循环的每次迭代都会产生更多开销,因此要比其他循环类型慢,一般速度为其他类型循环的1/7。因此,除非明确需要迭代一个属性数量未知的对象,否则应避免使用for-i</div> </li> <li><a href="/article/1835373236217540608.htm" title="360前端星计划-动画可以这么玩" target="_blank">360前端星计划-动画可以这么玩</a> <span class="text-muted">马小蜗</span> <div>动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能</div> </li> <li><a href="/article/1835369423289020416.htm" title="我的奶奶" target="_blank">我的奶奶</a> <span class="text-muted">此间风物</span> <div>妈妈生了三个孩子。小时候是奶奶带我。和她一起睡,教我洗脸,帮我扎头发,带我去看戏。奶奶无子。爸爸和姑姑是过继来的。从爷爷的兄弟们。奶奶待爸爸是极好的。待我如同。姑姑,很早就嫁人出去了。我无从知。但时间久了,言语间,姑姑和奶奶关系并不那么融洽。奶奶教我洗脸要洗两遍,拿热毛巾,第一遍呢,润一润,第二遍呢,才能擦干净。奶奶是极干净的人。就算到她八十多岁,颤巍巍时,日常还是穿戴整洁不苟的。我曾和妈妈说,如</div> </li> <li><a href="/article/1835365980067426304.htm" title="读《道德经》28" target="_blank">读《道德经》28</a> <span class="text-muted">华南帝虎</span> <div>甘德礼(读《道德经》28)原创分享609+277天,光山心协智慧父母课堂持续分享第262天原文知其雄,守其雌,为天下谿。为天下谿,常德不离,复归于婴儿。知其白,守其黑,为天下式。为天下式,常德不忒,复归于无极。知其荣,守共辱,为天下谷。为天下谷,常徳乃足,复归于朴。朴散则为器,圣人用之则为官长,故大制不割。译文越是自己雄强刚猛,越是要守得住雌柔安静,就像山间低凹的溪水样。像溪水一样,那规律性的德就</div> </li> <li><a href="/article/1835364838252048384.htm" title="2019-07-21" target="_blank">2019-07-21</a> <span class="text-muted">珊珊正常奋斗中</span> <div>姓名:方珊梅公司:深圳市雅诺讯科技有限公司【日精进打卡第49天】(知学)大学通编【经营12条:【口号】让世界信号无线连接(冶企)持续的改善现在的状态,持续的引进新的产品,持续创新,持续引领公司所有上下一条心,为自己为公司为目标而奋斗,持续的持续,就能改良现在的企业经营。【感悟】1:2:天塌下来,手上都要有一样产品是可以赚钱的3:相信团队的力量【感恩】1:感恩父母养育之恩2:感恩上天伺我一个这么优秀</div> </li> <li><a href="/article/1835363687506997248.htm" title="必知|儿童能力训练中的能力到底是什么?" target="_blank">必知|儿童能力训练中的能力到底是什么?</a> <span class="text-muted">ll冰儿</span> <div>今天我们来一起聊一下“能力”,我们做儿童能力训练,我们跟家长解释能力训练多么多么重要,很多家长反应很茫然,表示不太容易理解,训练能力难倒比学习知识更重要?这说明我们没有解释清楚什么是“能力”,它为什么会如此的重要,今天我们就来跟大白老师一起梳理一下能力的重要性,以及能力和知识的关系。我们采用类比的方式来形象的解释一下什么是能力:先来说说茅草屋,茅草屋一般很矮,没有谁会建造好几层的茅草屋吧?!我们再</div> </li> <li><a href="/article/1835361130516672512.htm" title="【品读国学经典】大学:第一章" target="_blank">【品读国学经典】大学:第一章</a> <span class="text-muted">冰清九月</span> <div>【原文】大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始。知所先后,则近道矣。古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知;致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下</div> </li> <li><a href="/article/1835360244646113280.htm" title="JavaScript中秋快乐!" target="_blank">JavaScript中秋快乐!</a> <span class="text-muted">Q_w7742</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>我们来实现一个简单的祝福网页~主要的难度在于使用canvas绘图当点击canvas时候,跳出“中秋节快乐”字样,需要注册鼠标单击事件和计时器。首先定义主要函数:初始化当点击canvas之后转到onCanvasClick函数,绘图生成灯笼。functiononCanvasClick(){//事件处理函数context.clearRect(0,0,canvas1.width,canvas1.heigh</div> </li> <li><a href="/article/1835359727924637696.htm" title="Nginx从入门到实践(三)" target="_blank">Nginx从入门到实践(三)</a> <span class="text-muted">听你讲故事啊</span> <div>动静分离动静分离是将网站静态资源(JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。rewrite规则Rewrite规则常见正则表达式Rewrite主要的功能就是实现URL的重写,Ngin</div> </li> <li><a href="/article/104.htm" title="springmvc 下 freemarker页面枚举的遍历输出" target="_blank">springmvc 下 freemarker页面枚举的遍历输出</a> <span class="text-muted">杨白白</span> <a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/freemarker/1.htm">freemarker</a> <div>spring mvc freemarker 中遍历枚举 1枚举类型有一个本地方法叫values(),这个方法可以直接返回枚举数组。所以可以利用这个遍历。 enum public enum BooleanEnum { TRUE(Boolean.TRUE, "是"), FALSE(Boolean.FALSE, "否"); </div> </li> <li><a href="/article/231.htm" title="实习简要总结" target="_blank">实习简要总结</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a> <div>来白虹不知不觉中已经一个多月了,因为项目还在需求分析及项目架构阶段,自己在这段 时间都是在学习相关技术知识,现在对这段时间的工作及学习情况做一个总结: (1)工作技能方面 大体分为两个阶段,Java Web 基础阶段和Java EE阶段 1)Java Web阶段 在这个阶段,自己主要着重学习了 JSP, Servlet, JDBC, MySQL,这些知识的核心点都过 了一遍,也</div> </li> <li><a href="/article/358.htm" title="Quartz——DateIntervalTrigger触发器" target="_blank">Quartz——DateIntervalTrigger触发器</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2208559 一.概述 simpleTrigger 内部实现机制是通过计算间隔时间来计算下次的执行时间,这就导致他有不适合调度的定时任务。例如我们想每天的 1:00AM 执行任务,如果使用 SimpleTrigger,间隔时间就是一天。注意这里就会有一个问题,即当有 misfired 的任务并且恢复执行时,该执行时间</div> </li> <li><a href="/article/485.htm" title="Unix快捷键" target="_blank">Unix快捷键</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a><a class="tag" taget="_blank" href="/search/Unix%EF%BC%9B%E5%BF%AB%E6%8D%B7%E9%94%AE%3B/1.htm">Unix;快捷键;</a> <div>复制,删除,粘贴: dd:删除光标所在的行                             &nbs</div> </li> <li><a href="/article/612.htm" title="获取Android设备屏幕的相关参数" target="_blank">获取Android设备屏幕的相关参数</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>包含屏幕的分辨率  以及 屏幕宽度的最大dp 高度最大dp   TextView text = (TextView)findViewById(R.id.text); DisplayMetrics dm = new DisplayMetrics(); text.append("getResources().ge</div> </li> <li><a href="/article/739.htm" title="要做物联网?先保护好你的数据" target="_blank">要做物联网?先保护好你的数据</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE/1.htm">数据</a> <div>根据Beecham Research的说法,那些在行业中希望利用物联网的关键领域需要提供更好的安全性。 在Beecham的物联网安全威胁图谱上,展示了那些可能产生内外部攻击并且需要通过快速发展的物联网行业加以解决的关键领域。 Beecham Research的技术主管Jon Howes说:“之所以我们目前还没有看到与物联网相关的严重安全事件,是因为目前还没有在大型客户和企业应用中进行部署,也就</div> </li> <li><a href="/article/866.htm" title="Java取模(求余)运算" target="_blank">Java取模(求余)运算</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>        整数之间的取模求余运算很好求,但几乎没有遇到过对负数进行取模求余,直接看下面代码: /** * * @author Logic * */ public class Test { public static void main(String[] args) { // TODO A</div> </li> <li><a href="/article/993.htm" title="SQL注入介绍" target="_blank">SQL注入介绍</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/sql%E6%B3%A8%E5%85%A5/1.htm">sql注入</a> <div>二、SQL注入范例 这里我们根据用户登录页面 <form action="" > 用户名:<input type="text" name="username"><br/> 密 码:<input type="password" name="passwor</div> </li> <li><a href="/article/1120.htm" title="优雅代码风格" target="_blank">优雅代码风格</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>总结了几点关于优雅代码风格的描述: 代码简单:不隐藏设计者的意图,抽象干净利落,控制语句直截了当。 接口清晰:类型接口表现力直白,字面表达含义,API 相互呼应以增强可测试性。 依赖项少:依赖关系越少越好,依赖少证明内聚程度高,低耦合利于自动测试,便于重构。 没有重复:重复代码意味着某些概念或想法没有在代码中良好的体现,及时重构消除重复。 战术分层:代码分层清晰,隔离明确,</div> </li> <li><a href="/article/1247.htm" title="布尔数组" target="_blank">布尔数组</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B8%83%E5%B0%94%E6%95%B0%E7%BB%84/1.htm">布尔数组</a> <div>  androi中提到了布尔数组;   布尔数组默认的是false,  并且只会打印false或者是true   布尔数组的例子;  根据字符数组创建布尔数组 char[] c = {'p','u','b','l','i','c'}; //根据字符数组的长度创建布尔数组的个数 boolean[] b = new bool</div> </li> <li><a href="/article/1374.htm" title="web.xml之welcome-file-list、error-page" target="_blank">web.xml之welcome-file-list、error-page</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/error-page/1.htm">error-page</a> <div>welcome-file-list 1.定义: <welcome-file-list> <welcome-file>login.jsp</welcome> </welcome-file-list>  2.作用:用来指定WEB应用首页名称。   error-page1.定义: <error-page&g</div> </li> <li><a href="/article/1501.htm" title="richfaces 4 fileUpload组件删除上传的文件" target="_blank">richfaces 4 fileUpload组件删除上传的文件</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/clear/1.htm">clear</a><a class="tag" taget="_blank" href="/search/Richfaces+4/1.htm">Richfaces 4</a><a class="tag" taget="_blank" href="/search/fileupload/1.htm">fileupload</a> <div> 页面代码               <h:form id="fileForm">            <rich:</div> </li> <li><a href="/article/1628.htm" title="技术文章备忘" target="_blank">技术文章备忘</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%96%87%E7%AB%A0/1.htm">技术文章</a> <div>Zookeeper http://wenku.baidu.com/view/bab171ffaef8941ea76e05b8.html http://wenku.baidu.com/link?url=8thAIwFTnPh2KL2b0p1V7XSgmF9ZEFgw4V_MkIpA9j8BX2rDQMPgK5l3wcs9oBTxeekOnm5P3BK8c6K2DWynq9nfUCkRlTt9uV</div> </li> <li><a href="/article/1755.htm" title="org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案" target="_blank">org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>文章摘自:http://blog.csdn.net/yangwawa19870921/article/details/7553181   在编写HQL时,可能会出现这种代码: select a.name,b.age from TableA a left join TableB b on a.id=b.id  如果这是HQL,那么这段代码就是错误的,因为HQL不支持</div> </li> <li><a href="/article/1882.htm" title="sqlserver按照字段内容进行排序" target="_blank">sqlserver按照字段内容进行排序</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E6%8C%89%E7%85%A7%E5%86%85%E5%AE%B9%E6%8E%92%E5%BA%8F/1.htm">按照内容排序</a> <div>在做项目的时候,遇到了这样的一个需求:           从数据库中取出的数据集,首先要将某个数据或者多个数据按照地段内容放到前面显示,例如:从学生表中取出姓李的放到数据集的前面;          select * fro</div> </li> <li><a href="/article/2009.htm" title="编程珠玑-第一章-位图排序" target="_blank">编程珠玑-第一章-位图排序</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E7%8F%A0%E7%8E%91/1.htm">编程珠玑</a> <div> import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Random; public class BitMapSearch { </div> </li> <li><a href="/article/2136.htm" title="Java关于==和equals" target="_blank">Java关于==和equals</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>关于==和equals概念其实很简单,一个是比较内存地址是否相同,一个比较的是值内容是否相同。虽然理解上不难,但是有时存在一些理解误区,如下情况: 1、 String a = "aaa"; a=="aaa"; ==> true 2、 new String("aaa")==new String("aaa</div> </li> <li><a href="/article/2263.htm" title="[IT与资本]软件行业需对外界投资热情保持警惕" target="_blank">[IT与资本]软件行业需对外界投资热情保持警惕</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/it/1.htm">it</a> <div>       我还是那个看法,软件行业需要增强内生动力,尽量依靠自有资金和营业收入来进行经营,避免在资本市场上经受各种不同类型的风险,为企业自主研发核心技术和产品提供稳定,温和的外部环境...       如果我们在自己尚未掌握核心技术之前,企图依靠上市来筹集资金,然后使劲往某个领域砸钱,然</div> </li> <li><a href="/article/2390.htm" title="oracle 数据块结构" target="_blank">oracle 数据块结构</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E5%9D%97/1.htm">块</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%9D%97/1.htm">数据块</a><a class="tag" taget="_blank" href="/search/%E5%9D%97%E7%BB%93%E6%9E%84/1.htm">块结构</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E7%9B%AE%E5%BD%95/1.htm">行目录</a> <div>oracle 数据块是数据库存储的最小单位,一般为操作系统块的N倍。其结构为: 块头--〉空行--〉数据,其实际为纵行结构。 块的标准大小由初始化参数DB_BLOCK_SIZE指定。具有标准大小的块称为标准块(Standard Block)。块的大小和标准块的大小不同的块叫非标准块(Nonstandard Block)。同一数据库中,Oracle9i及以上版本支持同一数据库中同时使用标</div> </li> <li><a href="/article/2517.htm" title="github上一些觉得对自己工作有用的项目收集" target="_blank">github上一些觉得对自己工作有用的项目收集</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>github上一些觉得对自己工作有用的项目收集 技能类 markdown语法中文说明 回到顶部 全文检索 elasticsearch bigdesk elasticsearch管理插件 回到顶部 nosql mapdb 支持亿级别map, list, 支持事务. 可考虑做为缓存使用 C</div> </li> <li><a href="/article/2644.htm" title="初二上学期难记单词二" target="_blank">初二上学期难记单词二</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>dangerous 危险的 panda 熊猫 lion 狮子 elephant 象 monkey 猴子 tiger 老虎 deer 鹿 snake 蛇 rabbit 兔子 duck 鸭 horse 马 forest 森林 fall 跌倒;落下 climb 爬;攀登 finish 完成;结束 cinema 电影院;电影 seafood 海鲜;海产食品 bank 银行</div> </li> <li><a href="/article/2771.htm" title="8、mysql外键(FOREIGN KEY)的简单使用" target="_blank">8、mysql外键(FOREIGN KEY)的简单使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>一、基本概念 1、MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。用于外键关系的字段必须在所有的参照表中进行明确地索引,InnoDB不能自动地创建索引。 2、外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。 3、如</div> </li> <li><a href="/article/2898.htm" title="java循环标签 Foreach" target="_blank">java循环标签 Foreach</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E6%A0%87%E7%AD%BE/1.htm">标签</a><a class="tag" taget="_blank" href="/search/java%E5%BE%AA%E7%8E%AF/1.htm">java循环</a><a class="tag" taget="_blank" href="/search/foreach/1.htm">foreach</a> <div>1. 简单的for循环 public static void main(String[] args) { for (int i = 1, y = i + 10; i < 5 && y < 12; i++, y = i * 2) { System.err.println("i=" + i + " y=" </div> </li> <li><a href="/article/3025.htm" title="Spring Security(05)——异常信息本地化" target="_blank">Spring Security(05)——异常信息本地化</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E5%B8%B8%E4%BF%A1%E6%81%AF/1.htm">异常信息</a><a class="tag" taget="_blank" href="/search/%E6%9C%AC%E5%9C%B0%E5%8C%96/1.htm">本地化</a> <div>异常信息本地化          Spring Security支持将展现给终端用户看的异常信息本地化,这些信息包括认证失败、访问被拒绝等。而对于展现给开发者看的异常信息和日志信息(如配置错误)则是不能够进行本地化的,它们是以英文硬编码在Spring Security的代码中的。在Spring-Security-core-x</div> </li> <li><a href="/article/3152.htm" title="DUBBO架构服务端告警Failed to send message Response" target="_blank">DUBBO架构服务端告警Failed to send message Response</a> <span class="text-muted">javamingtingzhao</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/DUBBO/1.htm">DUBBO</a> <div> 废话不多说,警告日志如下,不知道有哪位遇到过,此异常在服务端抛出(服务器启动第一次运行会有这个警告),后续运行没问题,找了好久真心不知道哪里错了。    WARN 2015-07-18 22:31:15,272 com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(84)</div> </li> <li><a href="/article/3279.htm" title="JS中Date对象中几个用法" target="_blank">JS中Date对象中几个用法</a> <span class="text-muted">leeqq</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%90%8E%E4%B8%80%E5%A4%A9/1.htm">最后一天</a> <div>近来工作中遇到这样的两个需求 1. 给个Date对象,找出该时间所在月的第一天和最后一天 2. 给个Date对象,找出该时间所在周的第一天和最后一天   需求1中的找月第一天很简单,我记得api中有setDate方法可以使用 使用setDate方法前,先看看getDate var date = new Date(); console.log(date); // Sat J</div> </li> <li><a href="/article/3406.htm" title="MFC中使用ado技术操作数据库" target="_blank">MFC中使用ado技术操作数据库</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a> <div>1.在stdafx.h中导入ado动态链接库 #import"C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","end")2.在CTestApp文件的InitInstance()函数中domodal之前写::CoIniti</div> </li> <li><a href="/article/3533.htm" title="Android Studio加速" target="_blank">Android Studio加速</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/android+studio/1.htm">android studio</a> <div>Android Studio慢、吃内存!启动时后会立即通过Gradle来sync & build工程。 (1)设置Android Studio a) 禁用插件 File -> Settings...  Plugins 去掉一些没有用的插件。 比如:Git Integration、GitHub、Google Cloud Testing、Google Cloud</div> </li> <li><a href="/article/3660.htm" title="各数据库的批量Update操作" target="_blank">各数据库的批量Update操作</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/sqlite/1.htm">sqlite</a> <div>MyBatis的update元素的用法与insert元素基本相同,因此本篇不打算重复了。本篇仅记录批量update操作的 sql语句,懂得SQL语句,那么MyBatis部分的操作就简单了。   注意:下列批量更新语句都是作为一个事务整体执行,要不全部成功,要不全部回滚。 MSSQL的SQL语句  WITH R AS(   SELECT 'John' as name, 18 as</div> </li> <li><a href="/article/3787.htm" title="html禁止清除input文本输入缓存" target="_blank">html禁止清除input文本输入缓存</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/input/1.htm">input</a> <div>多数浏览器默认会缓存input的值,只有使用ctl+F5强制刷新的才可以清除缓存记录。如果不想让浏览器缓存input的值,有2种方法: 方法一: 在不想使用缓存的input中添加 autocomplete="off"; eg: <input type="text" autocomplete="off" name</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>