要系統(tǒng)的學(xué)習(xí)JavaScript要掌握以下知識(shí):首先掌握HTML和CSS,這是基礎(chǔ)也是學(xué)習(xí)JavaScript的時(shí)候需要用到的知識(shí)。 千鋒教育就有線上免費(fèi)JavaScript線上公開(kāi)課。
成都創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)、網(wǎng)站重做改版、七里河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為七里河等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
其次,剛開(kāi)始入門(mén)不建議看《JavaScript權(quán)威指南》和《JavaScript高級(jí)程序設(shè)計(jì)》這些書(shū)籍。并非這些書(shū)籍不好,相反這些書(shū)籍是公認(rèn)的好書(shū)!主要是因?yàn)檫@些書(shū)籍內(nèi)容太多太厚了,很容易讓你走上‘從入門(mén)到放棄’道路!對(duì)于初學(xué)者而言,多而全意味著主次難分,無(wú)法取舍;此時(shí)你想把JavaScript學(xué)好,只能全學(xué),然而很多內(nèi)容對(duì)于初學(xué)者而言很難理解!第三,系統(tǒng)地學(xué)習(xí)JavaScript應(yīng)根據(jù)知識(shí)點(diǎn)的難易及內(nèi)在聯(lián)系劃分階段:初級(jí)-進(jìn)階-高級(jí),這樣才能更好地學(xué)習(xí)JavaScript。最后 最好有內(nèi)行人指導(dǎo),什么內(nèi)容常用,什么內(nèi)容重點(diǎn)掌握等等。如果身邊沒(méi)有這樣的人,可以選擇報(bào)班學(xué)習(xí)。千鋒教育目前在18個(gè)城市擁有22個(gè)校區(qū),年培養(yǎng)優(yōu)質(zhì)人才20000余人,與國(guó)內(nèi)20000余家企業(yè)建立人才輸送合作關(guān)系,院校合作超600所
今天小編要跟大家分享的文章是關(guān)于學(xué)習(xí)Web前端要知道的JavaScript、Ajax、jQuery知識(shí)。今天小編將詳細(xì)解讀JavaScript、ajax、jQuery是什么?他們可以實(shí)現(xiàn)什么?想要學(xué)習(xí)Web前端的小伙伴們來(lái)和小編一起看一看吧!
1、JavaScript
·___ㄒ澹
javaScript的簡(jiǎn)寫(xiě)形式就是JS,是由Netscape公司開(kāi)發(fā)的一種腳本語(yǔ)言,一種廣泛用于客戶(hù)端Web開(kāi)發(fā)的腳本語(yǔ)言,常用來(lái)給HTML網(wǎng)頁(yè)添加動(dòng)態(tài)功能(其編寫(xiě)的程序可以被嵌入到HTML或XML頁(yè)面中,并直接在瀏覽器中解釋執(zhí)行)。
·___槌剎糠鄭
核心(ECMAScript)、文檔對(duì)象模型(DocumentObjectModel,簡(jiǎn)稱(chēng)DOM)、瀏覽器對(duì)象模型(BrowserObjectModel,簡(jiǎn)稱(chēng)BOM)
·___枋觶
Javascript就是適應(yīng)動(dòng)態(tài)網(wǎng)頁(yè)制作的需要而誕生的一種新的編程語(yǔ)言,如今越來(lái)越廣泛地使用于Internet網(wǎng)頁(yè)制作上。
Javascript是由Netscape公司開(kāi)發(fā)的一種腳本語(yǔ)言(scripting
language),或者稱(chēng)為描述語(yǔ)言。在HTML基礎(chǔ)上,使用Javascript可以開(kāi)發(fā)交互式Web網(wǎng)頁(yè)。
Javascript的出現(xiàn)使得網(wǎng)頁(yè)和用戶(hù)之間實(shí)現(xiàn)了一種實(shí)時(shí)性的、動(dòng)態(tài)的、交互性的關(guān)系,使網(wǎng)頁(yè)包含更多活躍的元素和更加精彩的內(nèi)容。
Javascript短小精悍,又是在客戶(hù)機(jī)上執(zhí)行的,大大提高了網(wǎng)頁(yè)的瀏覽速度和交互能力。同時(shí)它又是專(zhuān)門(mén)為制作Web網(wǎng)頁(yè)而量身定做的一種簡(jiǎn)單的編程語(yǔ)言。
主流的javaScript框架有:YUI,Dojo,Prototype,jQuery...
2、AJax
·___ㄒ澹
AJAX即“AsynchronousJavaScriptandXML”(異步JavaScript和XML),AJAX并非縮寫(xiě)詞,而是由JesseJamesGaiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。
_JAX不是一個(gè)技術(shù),它實(shí)際上是幾種技術(shù),每種技術(shù)都有其獨(dú)特之處,合在一起就成了一個(gè)功能強(qiáng)大的新技術(shù)。
·___槌桑
基于XHTML和CSS標(biāo)準(zhǔn)的表示;
使用Document
ObjectModel進(jìn)行動(dòng)態(tài)顯示和交互;
使用XML和XSLT做數(shù)據(jù)交互和操作;
使用XML
HttpRequest與服務(wù)器進(jìn)行異步通信;
使用JavaScript綁定一切。
·___枋觶
Ajax是結(jié)合了Java技術(shù)、XML以及JavaScript等編程技術(shù),可以讓開(kāi)發(fā)人員構(gòu)建基于Java技術(shù)的Web應(yīng)用,并打破了使用頁(yè)面重載的管理。
Ajax技術(shù)使用非同步的HTTP請(qǐng)求,在Browser和WebServer之間傳遞數(shù)據(jù),使Browser只更新部分網(wǎng)頁(yè)內(nèi)容而不重新載入整個(gè)網(wǎng)頁(yè)。
Ajax是使用客戶(hù)端腳本與Web服務(wù)器交換數(shù)據(jù)的Web應(yīng)用開(kāi)發(fā)方法。這樣,Web頁(yè)面不用打斷交互流程進(jìn)行重新加裁,就可以動(dòng)態(tài)地更新。使用Ajax,用戶(hù)可以創(chuàng)建接近本地桌面應(yīng)用的直接、高可用、更豐富、更動(dòng)態(tài)的Web用戶(hù)界面。
3、jQuery
·___ㄒ澹
jQuery是一個(gè)快速的,簡(jiǎn)潔的javaScript庫(kù),使用戶(hù)能更方便地處理HTML
documents、events、實(shí)現(xiàn)動(dòng)畫(huà)效果,并且方便地為網(wǎng)站提供AJAX交互。
·___氐悖
輕量級(jí)、鏈?zhǔn)秸Z(yǔ)法、CSS1-3選擇器、跨瀏覽器、簡(jiǎn)單、易擴(kuò)展;
jQuery是一種獨(dú)立于服務(wù)器端代碼的框架,獨(dú)立于ASP.NET或者JAVA;
jQuery是當(dāng)前很流行的一個(gè)JavaScript框架,使用類(lèi)似于CSS的選擇器,可以方便的操作HTML元素,擁有很好的可擴(kuò)展性,擁有不少插件。
·___枋觶
對(duì)于程序員來(lái)說(shuō),簡(jiǎn)化javascript和ajax編程,能夠使程序員從設(shè)計(jì)和書(shū)寫(xiě)繁雜的JS應(yīng)用中解脫出來(lái),將關(guān)注點(diǎn)轉(zhuǎn)向功能需求而非實(shí)現(xiàn)細(xì)節(jié)上,從而提高項(xiàng)目的開(kāi)發(fā)速度。
對(duì)于用戶(hù)來(lái)說(shuō),改善了頁(yè)面的視覺(jué)效果,增強(qiáng)了與頁(yè)面的交互性,體驗(yàn)更絢麗的網(wǎng)頁(yè)物資。javaScript框架實(shí)際上是一系列工具和函數(shù)。
4、三者的關(guān)系
下面我用一張導(dǎo)圖來(lái)闡述這三者的關(guān)系:
解釋?zhuān)?/p>
javaScript是用于Web客戶(hù)端開(kāi)發(fā)的腳本語(yǔ)言,Ajax是基于JS語(yǔ)言,主要組合JS、CSS、XML三種技術(shù)的新技術(shù),是用于創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。jQuery是JS的框架,基于JS語(yǔ)言,集合Ajax技術(shù)開(kāi)發(fā)出來(lái)的JS庫(kù),封裝JS和Ajax的功能,提供函數(shù)接口,大大簡(jiǎn)化了Ajax,JS的操作。
以上就是小編今天為大家分享的關(guān)于學(xué)習(xí)Web前端要知道的JavaScript、Ajax、jQuery知識(shí)的文章,希望本篇文章能夠?qū)φ趶氖耊eb前端工作的小伙伴們有所幫助。想要了解更多Web前端知識(shí)記得關(guān)注北大青鳥(niǎo)Web培訓(xùn)官網(wǎng)。最后祝愿小伙伴們工作順利,成為一名優(yōu)秀的Web前端工程師!
原文鏈接:#/u/155352/blog/789347
SHAPE\*MERGEFORMAT
SHAPE\*MERGEFORMAT
要學(xué)習(xí)JavaScript的基礎(chǔ);
JavaScript的操作屬性 操作樣式 數(shù)據(jù)類(lèi)型 判斷;
JavaScript的循環(huán) 自定義屬性運(yùn)用;
JavaScript的函數(shù)參數(shù)傳遞;
js解析順序和作用域;
JavaScript的字符串和數(shù)組方法;
JavaScript的json 和 call,apply,bind;
JavaScript的定時(shí)器 Math數(shù)學(xué)函數(shù)、日期對(duì)象、速度運(yùn)動(dòng)框架、時(shí)間版運(yùn)動(dòng)Tween.js;
JavaScript的DOM操作+BOM操作+cookie操作+RegExp正則表達(dá)式+Ajax、面向?qū)蚃query特效;
如果你想提升自己真正的實(shí)力,你可以來(lái)我們這個(gè)QQ群學(xué)習(xí),開(kāi)始的第一組是:62九,然后位于中間位置的一組是:七二五,最后一組是:222,按照順序拼起來(lái),就能找到解決困擾你內(nèi)心的殿堂。
今天小編要跟大家分享的文章是關(guān)于Web前端開(kāi)發(fā)知識(shí)點(diǎn)之JavaScript對(duì)象。真正從事web前端工作的小伙伴們來(lái)小編一起看一看吧,希望本篇文章能夠?qū)Υ蠹矣兴鶐椭?/p>
1、Function對(duì)象
①對(duì)象的創(chuàng)建
Function對(duì)象的創(chuàng)建共有3種方法。
第一種方法格式如下,不符合我們寫(xiě)代碼的習(xí)慣,不建議使用
varfun=newFunction(形式參數(shù)列表,方法體);
第二種方法格式如下:
function方法名稱(chēng)(形式參數(shù)列表){方法體}
第三種方法格式如下:
var方法名稱(chēng)=function(形式參數(shù)列表){方法體}
一般我們采用后兩種方法進(jìn)行Function對(duì)象的創(chuàng)建。
②對(duì)象的屬性
·length屬性代表形參的個(gè)數(shù)
③對(duì)象的特點(diǎn)
·方法定義時(shí),形式參數(shù)的類(lèi)型不用寫(xiě),返回值類(lèi)型也不寫(xiě)。
·方法是一個(gè)對(duì)象,如果定義名稱(chēng)相同的方法,會(huì)覆蓋。
·在JavaScript中、方法的調(diào)用只與方法的名稱(chēng)有關(guān),和參數(shù)列表無(wú)關(guān)
·在方法聲明中有一個(gè)隱藏的內(nèi)置對(duì)象(數(shù)組)arguments封裝所有的實(shí)際參數(shù)
④對(duì)象的調(diào)用
方法名稱(chēng)(實(shí)際參數(shù)列表);
2、Array對(duì)象
①對(duì)象的創(chuàng)建
Array數(shù)組對(duì)象也有三種創(chuàng)建方式,三種格式如下所示:
vararr=newArray(元素列表);vararr=newArray(默認(rèn)長(zhǎng)度);vararr=[元素列表];
②對(duì)象的方法
Array對(duì)象有很多方法,下面介紹兩個(gè)常用的方法:
join(參數(shù)):將數(shù)組中的元秦按照指定的分隔符拼接為字符串
push():向數(shù)組的末尾添加一個(gè)或更多元素,并返回新的長(zhǎng)度。
③對(duì)象的屬性
·length屬性代表數(shù)組的長(zhǎng)度
④對(duì)象的特點(diǎn)
在JavaScript中,數(shù)組元素的類(lèi)型是可變的。
在JavaScript中,數(shù)組的長(zhǎng)度是可變的。
3、Date對(duì)象
①對(duì)象的創(chuàng)建
vardata=newDate();
②對(duì)象的方法
Array對(duì)象有很多方法,下面介紹兩個(gè)常用的方法:
toLocalestring():返回當(dāng)前date對(duì)象對(duì)應(yīng)的時(shí)間本地字符串格式
getTime():獲取毫秒值。返回當(dāng)前日期對(duì)象描述的時(shí)間到1970年1月1日零點(diǎn)的毫秒值差
4、Math對(duì)象
①對(duì)象的創(chuàng)建
Math數(shù)學(xué)對(duì)象不用創(chuàng)建,可以直接使用,使用方式如下:
Math.方法名();
②對(duì)象的方法
Array對(duì)象有很多方法,下面介紹四個(gè)常用的方法:
random():返回0~1之間的隨機(jī)數(shù)。含0不含1。
ceil(x):對(duì)數(shù)進(jìn)行上取整。
floor(x):對(duì)數(shù)進(jìn)行下取整。
round(x):對(duì)數(shù)進(jìn)行四舍五入。
5、RegExp對(duì)象
在學(xué)習(xí)RegExp正則對(duì)象之前,我們首先來(lái)復(fù)習(xí)一下什么是正則表達(dá)式?正則表達(dá)式就是定義字符串的組成規(guī)則。
單個(gè)字符用[]表示。如:
[a]表示字符a
[a-z]表示a-z中的任一字符
還有一些特殊符號(hào)代表特殊含義的單個(gè)字符。例如:
\d表示單個(gè)數(shù)字字符=[0-9]
\w表示單個(gè)單詞字符=[a-zA-Z0-9_]
量詞符號(hào)用?、*、+、{m,n}表示。其中
·?:表示出現(xiàn)0次或1次
·*:表示出現(xiàn)0次或多次
·+:出現(xiàn)1次或多次
·{m,n}:表示m
§m如果缺省,即{,n}:最多n次
§n如果缺省,即{m,}:最少m次
①對(duì)象的創(chuàng)建
RegExp正則對(duì)象的創(chuàng)建有兩種方法,我們一般采用第二種。
varreg=newRegExp("正則表達(dá)式");varreg=/正則表達(dá)式/;
②對(duì)象的方法
RegExp對(duì)象的常用方法只有一種:
test(參數(shù)):驗(yàn)證指定的字符串是否符合正則定義的規(guī)范
6、Global對(duì)象
①對(duì)象的創(chuàng)建
顧名思義,Global對(duì)象就是全局對(duì)象,這個(gè)Global中封裝的方法不需要對(duì)象就可以直接調(diào)用。格式如下:
方法名();
②對(duì)象的方法
全局對(duì)象的方法有很多,下面簡(jiǎn)單介紹幾種:
encodeURI():url編碼
decodeURI():url解碼
parseInt():將字符串轉(zhuǎn)為數(shù)字。逐一判斷每一個(gè)字符是否是數(shù)字,直到不是數(shù)字為止,將前邊數(shù)字部分轉(zhuǎn)為number
isNaN():判斷一個(gè)值是否是NaN。NaN六親不認(rèn),連自己都不認(rèn)。NaN參與的==比較全部為false。
eval():將JavaScript轉(zhuǎn)化為字符串,并把它作為腳本代碼來(lái)執(zhí)行。
以上就是小編今天為大家分享的關(guān)于Web前端開(kāi)發(fā)知識(shí)點(diǎn)之JavaScript對(duì)象的文章,希望本篇文章能夠?qū)φ趶氖聎eb前端學(xué)習(xí)和工作的小伙伴們有所幫助,想要了解更多web前端知識(shí)記得關(guān)注北大青鳥(niǎo)web培訓(xùn)官網(wǎng),最后祝愿小伙伴們工作順利,成為一名優(yōu)秀的web前端工程師。
文章來(lái)源:原創(chuàng)凱哥的故事
以下是JavaScript容易犯錯(cuò)的幾個(gè)"陷阱".由本人google+體驗(yàn)+搜集而來(lái).雖然不是什么很高深的技術(shù)問(wèn)題,但注意一下,會(huì)使您的編程輕松些.
1. 最后一個(gè)逗號(hào)
如這段代碼,注意最后一個(gè)逗號(hào),按語(yǔ)言學(xué)角度來(lái)說(shuō)應(yīng)該是不錯(cuò)的(python的類(lèi)似數(shù)據(jù)類(lèi)型辭典dictionary就允許如此)。IE會(huì)報(bào)語(yǔ)法錯(cuò)誤,但語(yǔ)義不詳,你只能用人眼從幾千行代碼中掃描。
Js代碼
script
var theObj = {
city : "ShenZhen",
state : "ok",
}
/script
script var theObj = { city : "ShenZhen", state : "ok", } /script
2. this的引用會(huì)改變
如這段代碼:
Js代碼
input type="button" value="Gotcha!" id="MyButton"
script
var MyObject = function () {
this.alertMessage = "Javascript rules";
this.ClickHandler = function() {
alert(this.alertMessage ); //行1
}
}();
document.getElementById("theText").onclick = MyObject.ClickHandler;
/script
input type="button" value="Gotcha!" id="MyButton" script var MyObject = function () { this.alertMessage = "Javascript rules"; this.ClickHandler = function() { alert(this.alertMessage ); //行1 } }(); document.getElementById("theText").onclick = MyObject.ClickHandler; /script
并不如你所愿,答案并不是”JavaScript rules”。在執(zhí)行MyObject.ClickHandler時(shí),在行1中,this的引用實(shí)際上指向的是document.getElementById("theText")的引用??梢赃@么解決:
Js代碼
input type="button" value="Gotcha!" id="theText"
script
var MyObject = function () {
var self = this;
this.alertMessage = “Javascript rules”;
this.OnClick = function() {
alert(self.value);
}
}();
document.getElementById(”theText”).onclick = MyObject.OnClick
/script
input type="button" value="Gotcha!" id="theText" script var MyObject = function () { var self = this; this.alertMessage = “Javascript rules”; this.OnClick = function() { alert(self.value); } }(); document.getElementById(”theText”).onclick = MyObject.OnClick /script
實(shí)質(zhì)上,這就是JavaScript作用域的問(wèn)題。如果你看過(guò),你會(huì)發(fā)現(xiàn)解決方案不止一種。
3. 標(biāo)識(shí)盜賊
在JavaScript中不要使用跟HTML的id一樣的變量名。如下代碼:
Js代碼
input type="button" id="TheButton"
script
var TheButton = document.getElementById("TheButton");
/script
input type="button" id="TheButton" script var TheButton = document.getElementById("TheButton"); /script
IE會(huì)報(bào)對(duì)象未定義的錯(cuò)誤。我只能說(shuō):IE 真爛.
4. 字符串只替換第一個(gè)匹配
如下代碼:
Js代碼
script
var fileName = "This is a title";
fileName=fileName.replace(" ","_");
/script
script var fileName = "This is a title"; fileName=fileName.replace(" ","_"); /script
而實(shí)際上,fileName結(jié)果是"This_is a title". 在JavaScript中,String.replace的第一個(gè)參數(shù)應(yīng)該是正則表達(dá)式。所以,正確的做法是這樣:
Js代碼
var fileName = "This is a title".replace(/ /g,"_");
var fileName = "This is a title".replace(/ /g,"_");
5. mouseout意味著mousein
事實(shí)上,這是由于事件冒泡導(dǎo)致的。IE中有mouseenter和mouseleave,但不是標(biāo)準(zhǔn)的。作者在此建議大家使用js庫(kù)來(lái)解決問(wèn)題。
6. parseInt是基于進(jìn)制體系的
這個(gè)是常識(shí),可是很多人給忽略了parseInt還有第二個(gè)參數(shù),用以指明進(jìn)制。比如,parseInt("09"),如果你認(rèn)為答案是9,那就錯(cuò)了。因?yàn)椋诖?,字符串?開(kāi)頭,parseInt以八進(jìn)制來(lái)處理它,在八進(jìn)制中,09是非法,返回false,布爾值false轉(zhuǎn)化成數(shù)值就是0. 因此,正確的做法是
Js代碼
parseInt("09", 10).
parseInt("09", 10).
7. for...in...會(huì)遍歷所有的東西
有一段這樣的代碼:
Js代碼
var arr = [5,10,15]
var total = 1;
for ( var x in arr) {
total = total * arr[x];
}
var arr = [5,10,15] var total = 1; for ( var x in arr) { total = total * arr[x]; }
運(yùn)行得好好的,不是嗎?但是有一天它不干了,給我返回的值變成了NaN, 暈。我只不過(guò)引入了一個(gè)庫(kù)而已啊。原來(lái)是這個(gè)庫(kù)改寫(xiě)了Array的prototype,這樣,我們的arr平白無(wú)過(guò)多出了一個(gè)屬性(方法),而for...in...會(huì)把它給遍歷出來(lái)。
其實(shí),就算沒(méi)有引進(jìn)庫(kù).它的結(jié)果也并不是數(shù)組所有元素的乘積,因?yàn)閒or...in...會(huì)遍歷到數(shù)組的length屬性.
所以這樣做才是比較安全的:
Js代碼
for ( var x = 0; x arr.length; x++) {
total = total * arr[x];
}
for ( var x = 0; x arr.length; x++) { total = total * arr[x]; }
其實(shí),這也是污染基本類(lèi)的prototype會(huì)帶來(lái)危害的一個(gè)例證。
8. 事件處理器的陷阱
這其實(shí)只會(huì)存在使用作為對(duì)象屬性的事件處理器才會(huì)存在的問(wèn)題。比如window.onclick = MyOnClickMethod這樣的代碼,這會(huì)復(fù)寫(xiě)掉之前的window.onclick事件,還可能導(dǎo)致IE的內(nèi)容泄露(sucks again)。在IE還沒(méi)有支持DOM 2的事件注冊(cè)之前,作者建議使用庫(kù)來(lái)解決問(wèn)題,比如使用YUI:
YAHOO.util.Event.addListener(window, "click", MyOnClickMethod);
這應(yīng)該也屬于常識(shí)問(wèn)題,但新手可能容易犯錯(cuò)。
9. focus() 出錯(cuò)
新建一個(gè)input文本元素,然后把焦點(diǎn)挪到它上面,按理說(shuō),這樣的代碼應(yīng)該很自然:
Js代碼
var newInput = document.createElement("input");
document.body.appendChild(newInput);
newInput.focus();
newInput.select();
var newInput = document.createElement("input"); document.body.appendChild(newInput); newInput.focus(); newInput.select();
但是IE會(huì)報(bào)錯(cuò)。這是因?yàn)楫?dāng)你執(zhí)行fouce()的時(shí)候,元素尚未可用。因此,我們可以延遲執(zhí)行:
Js代碼
var newInput = document.createElement("input");
newInput.id = "TheNewInput";
document.body.appendChild(newInput);
//在0.01秒之后調(diào)用匿名函數(shù)獲取焦點(diǎn)
setTimeout(function(){
document.getElementById('TheNewInput').focus();
document.getElementById('TheNewInput').select();}, 10);
var newInput = document.createElement("input"); newInput.id = "TheNewInput"; document.body.appendChild(newInput); //在0.01秒之后調(diào)用匿名函數(shù)獲取焦點(diǎn) setTimeout(function(){ document.getElementById('TheNewInput').focus(); document.getElementById('TheNewInput').select();}, 10);
更詳細(xì)的資料參見(jiàn):
10.document.write()完全替換之前頁(yè)面內(nèi)容
有這樣一段代碼:
Js代碼
h3開(kāi)始/h3
script type="text/jscript"
function init() {
document.write("現(xiàn)在時(shí)間是:" + Date() );
}
window.onload = init;
/script
h3結(jié)束/h3
h3開(kāi)始/h3 script type="text/jscript" function init() { document.write("現(xiàn)在時(shí)間是:" + Date() ); } window.onload = init; /script h3結(jié)束/h3
上面代碼塊中的"開(kāi)始"和"結(jié)束"兩塊不會(huì)輸出.
當(dāng)onload事件結(jié)束之后,如果再一次調(diào)用document.write()方法寫(xiě)進(jìn)一段HTML,這段HTML會(huì)完全替換掉之前頁(yè)面的內(nèi)容.整個(gè)頁(yè)面的源代碼就變?yōu)榱薲ocument.write()所寫(xiě)的內(nèi)容.把上面的改為:
Js代碼
h3開(kāi)始/h3
script type="text/jscript"
function init() {
document.write("現(xiàn)在時(shí)間是:" + new Date() );
}
init()
/script
h3結(jié)束/h3
h3開(kāi)始/h3 script type="text/jscript" function init() { document.write("現(xiàn)在時(shí)間是:" + new Date() ); } init() /script h3結(jié)束/h3
"開(kāi)始"和"結(jié)束"就會(huì)正常輸出.
11.注意你name的值.
有這樣一段代碼:
Js代碼
form name="myForm" action="aa.htm"
input type="text" name="action" /
/form
script
//獲取form的id
alert(document.forms[0].action);
/script
form name="myForm" action="aa.htm" input type="text" name="action" / /form script //獲取form的id alert(document.forms[0].action); /script
可輸出結(jié)果不是我們想要的"aa.htm",而是一個(gè)"[object]"字符串.因?yàn)樗玫降氖莔yForm中的name為"action"的input標(biāo)簽的值.更詳細(xì)的內(nèi)容請(qǐng)參考[url]
[/url]
12.后臺(tái)數(shù)據(jù)傳輸不會(huì)影響到前臺(tái)
也許你會(huì)說(shuō)這是一非常低級(jí)的錯(cuò)誤.但我還是想說(shuō)下:
頁(yè)面login.htm代碼
Js代碼
...
xmlHttp.open("GET","check.htm",false);
xmlHttp.send();
alert(xmlHttp.responseText);
...
... xmlHttp.open("GET","check.htm",false); xmlHttp.send(); alert(xmlHttp.responseText); ...
頁(yè)面check.htm代碼
Js代碼
...
window.onload=checkLogin;
function checkLogin(){
...
//如果驗(yàn)證失敗,彈出錯(cuò)誤
alert("登錄失敗");
...
}
...
... window.onload=checkLogin; function checkLogin(){ ... //如果驗(yàn)證失敗,彈出錯(cuò)誤 alert("登錄失敗"); ... } ...
很多人習(xí)慣用這種方法來(lái)進(jìn)行登錄失敗的提示.但是要注意:xmlHttp發(fā)送數(shù)據(jù)的時(shí)候是進(jìn)行的后臺(tái)發(fā)送,它所關(guān)心的,僅僅是send之后,得到所請(qǐng)求URL的響應(yīng).而check.htm頁(yè)面所執(zhí)行的一切,都是只在后臺(tái)完成.不管它怎么跳轉(zhuǎn),或者alert(),或者close().都不會(huì)在界面中有任何顯示.
-----------------------------------------------------------------------------------------
在實(shí)踐中,JavaScript的陷阱還有很多很多,大多是由于解析器的實(shí)現(xiàn)不到位而引起。這些東西一般都不會(huì)在教科書(shū)中出現(xiàn),只能靠開(kāi)發(fā)者之間的經(jīng)驗(yàn)分享。希望大家有更好的分享。
部分內(nèi)容引用自:
文章出處:DIY部落()