1,我們?cè)谑褂肑avaScript代碼有兩種寫(xiě)法:一種是在HTML頁(yè)面中直接嵌入js代碼,另一種是通過(guò)鏈接外部的JavaScript文件。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到東西湖網(wǎng)站設(shè)計(jì)與東西湖網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋東西湖地區(qū)。
2,在HTML頁(yè)面中直接嵌入js代碼
3,如果在HTML頁(yè)面中直接嵌入JavaScript代碼,我們需要使用 script 標(biāo)簽,script 和 /script 會(huì)告訴 JavaScript 在何處開(kāi)始和結(jié)束。
4,script
alert("My First JavaScript");
/script
5,在HTML頁(yè)面的任何位置(head部分 body部分 body的后面 較好)都可以插入script標(biāo)簽。
6,第二種用法:通過(guò)鏈接外部的JavaScript文件。
7,首先我們建立一個(gè)JavaScript文件,擴(kuò)展名是.js
然后將要編寫(xiě)的js代碼寫(xiě)到Js文件中,并保存文件。使用script標(biāo)簽將JavaScript文件鏈接到HTML文件中
1、字符串的創(chuàng)建
創(chuàng)建一個(gè)字符串有幾種方法。最簡(jiǎn)單的是用引號(hào)將一組字符包含起來(lái),可以將其賦值給一個(gè)字符串變量。
var myStr = "Hello, String!";
我們?cè)谏厦婺_本創(chuàng)建了字符串,但本質(zhì)上,它們并不是真正的字符串對(duì)象,準(zhǔn)確地說(shuō),它們是字符串類(lèi)型的值。要?jiǎng)?chuàng)建一個(gè)字符串對(duì)象,可使用如下語(yǔ)句:var strObj = new String("Hello, String!");
使用typeof運(yùn)算符查看會(huì)發(fā)現(xiàn),上面的myStr類(lèi)型為string,而strObj類(lèi)型為object。
如果想知道字符串的長(zhǎng)度,使用其length屬性:string.length。
得到字符串的指定位置的字符使用方法:string.charAt(index);
2、字符串的拼接
非常簡(jiǎn)單,就用一個(gè)"+"將兩個(gè)字符串"相加":
var longString = "One piece " + "plus one more piece.";
要將多個(gè)字符串累積為一個(gè)字符串,還可以使用"+="操作符:
var result = "";
result += "My name is Anders"
result += " and my age is 25";
要在字符串中添加換行符,需要使用轉(zhuǎn)義字符"/n":
var confirmString = "You did not enter a response to the last " +
"question./n/nSubmit form anyway?";
var confirmValue = confirm(confirmString);
但這種方法只能用在像警告、確認(rèn)對(duì)話(huà)框之類(lèi)的情況下,如果將這段文本作為HTML內(nèi)容呈現(xiàn),就無(wú)效了,此時(shí)用"br"代替它:
var htmlString = "First line of string.brSecond line of string.";
document.write(htmlString);
String對(duì)象還提供了方法concat(),它完成與"+"相同的功能:
string.concat(value1, value2, ...)
不過(guò)concat()方法顯然不如"+"來(lái)得直觀簡(jiǎn)潔。
3、訪問(wèn)字符串的子串
使用substring()或slice()方法(NN4+, IE4+),下面說(shuō)明它們的具體用法。
substring()的原型為: string.substring(from, to)
第一個(gè)參數(shù)from指定了子字符串在原字符串中的起始位置(基于0的索引);第二個(gè)參數(shù)to是可選的,它指定了子字符串在原字符串的結(jié)束位置(基于0的索引),一般情況下,它應(yīng)比f(wàn)rom大,如果它被省略,那么子字符串將一直到原字符串的結(jié)尾處。
如果參數(shù)from不小心比參數(shù)to大了會(huì)怎樣?JavaScript會(huì)自動(dòng)調(diào)解子字符串的起止位置,也就是說(shuō),substring()總是從兩個(gè)參數(shù)中較小的那個(gè)開(kāi)始,到較大的那個(gè)結(jié)束。不過(guò)要注意,它包含起始位置的那個(gè)字符,但不包含結(jié)束位置的那個(gè)字符。
var fullString = "Every dog has his day.";
var section = fullString.substring(0, 4); // section is "Ever".
slice()的原型為: string.slice(start, end)
參數(shù)start表示子串的起始位置,如果為負(fù)數(shù),那么可以理解為倒數(shù)第幾個(gè)開(kāi)始,例如-3表示從倒數(shù)第三個(gè)開(kāi)始;參數(shù)end表示結(jié)束位置,與start一樣,它也可以為負(fù)數(shù),其含義也表示到倒數(shù)第幾個(gè)結(jié)束。slice()的參數(shù)可以為負(fù)數(shù),所以要比substring()更加靈活,但沒(méi)那么寬容了,如果start比end要大,它將返回一個(gè)空字符串(示例略)。
還有一個(gè)方法是substr(),其原型為: string.substr(start, length)
從原型可以看出它的參數(shù)的含義,start表示起始位置,length則表示子字符串的長(zhǎng)度。JavaScript標(biāo)準(zhǔn)不提倡使用該方法。
4、字符串的大小寫(xiě)轉(zhuǎn)換
使用toLowerCase()和toUpperCase()方法:
var city = "ShanGHai";
city = city.toLowerCase(); // city is "shanghai" now.
5、判斷兩個(gè)字符串是否相等
先將用戶(hù)的輸入值全部轉(zhuǎn)換為大寫(xiě)(或小寫(xiě)),然后再行比較:
var name = document.form1.txtUserName.value.toLowerCase();
if(name == "urname")
{
// statements go here.
}
JavaScript有兩種相等運(yùn)算符。一種是完全向后兼容的,標(biāo)準(zhǔn)的"==",如果兩個(gè)操作數(shù)類(lèi)型不一致,它會(huì)在某些時(shí)候自動(dòng)對(duì)操作數(shù)進(jìn)行類(lèi)型轉(zhuǎn)換,考慮下面的賦值語(yǔ)句:
var strA = "i love you!";
var strB = new String("i love you!");
這兩個(gè)變量含有相同的字符序列,但數(shù)據(jù)類(lèi)型卻不同,前者為string,后者為object,在使用"=="操作符時(shí),JavaScript會(huì)嘗試各種求值,以檢測(cè)兩者是否會(huì)在某種情況下相等。所以下面的表達(dá)式結(jié)果為true: strA == strB。
第二種操作符是"嚴(yán)格"的"===",它在求值時(shí)不會(huì)這么寬容,不會(huì)進(jìn)行類(lèi)型轉(zhuǎn)換。所以表達(dá)式strA === strB的值為false,雖然兩個(gè)變量持有的值相同。
有時(shí)代碼的邏輯要求你判斷兩個(gè)值是否不相等,這里也有兩個(gè)選擇:"!="和嚴(yán)格的"!==",它們的關(guān)系就類(lèi)似于"=="和"==="。
討論:
"=="和"!="在求值時(shí)會(huì)盡可能地尋找值的匹配性,但你可能還是想在比較前進(jìn)行顯式的類(lèi)型轉(zhuǎn)換,以"幫助"它們完成工作。比如,如果想判斷一個(gè)用戶(hù)的輸入值(字符串)是否等于一個(gè)數(shù)字,你可以讓"=="幫你完成類(lèi)型轉(zhuǎn)換:
if(document.form1.txtAge.value == someNumericVar) { ... }
也可以提前轉(zhuǎn)換:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }
如果你比較習(xí)慣于強(qiáng)類(lèi)型的編程語(yǔ)言(比如C#,Java等),那么這里你可以延續(xù)你的習(xí)慣(類(lèi)型轉(zhuǎn)換),這樣也會(huì)增強(qiáng)程序的可讀性。
有一種情況需要注意,就是計(jì)算機(jī)的區(qū)域設(shè)置。如果用""和""來(lái)比較字符串,那么JavaScript把它們作為Unicode來(lái)比較,但顯然,人們?cè)跒g覽網(wǎng)頁(yè)時(shí)不會(huì)把文本當(dāng)作Unicode來(lái)閱讀:) 比如在西班牙語(yǔ)中,按照傳統(tǒng)的排序,"ch"將作為一個(gè)字符排在"c"和"d"之間。localeCompare()提供了一種方式,可以幫助你使用默認(rèn)區(qū)域設(shè)置下的字符排序規(guī)則。
var strings; // 要排序的字符串?dāng)?shù)組,假設(shè)已經(jīng)得到初始化
strings.sort(function(a,b) { return a.localeCompare(b) }); // 調(diào)用sort()方法進(jìn)行排序
6、字符串的查找
使用string的indexOf()方法:
strObj.indexOf(subString[, startIndex])
strObj為要進(jìn)行判斷的字符串,subString為要在strObj查找的子字符串,startIndex是可選的,表示查找的開(kāi)始位置(基于0的索引),如果startIndex省略,則從strObj開(kāi)始處查找,如果startIndex小于0,則從0開(kāi)始,如果startIndex大于最大索引,則從最大索引處開(kāi)始。
indexOf()返回strObj中subString的開(kāi)始位置,如果沒(méi)有找到,則返回-1。在腳本中,可以這么使用:
if(largeString.indexOf(shortString) != -1)
{
// 如果包含,進(jìn)行相應(yīng)處理;
}
也許一個(gè)字符串會(huì)包含另一字符串不止一次,這時(shí)第二個(gè)參數(shù)startIndex也許會(huì)派上用場(chǎng),下面這個(gè)函數(shù)演示如何求得一個(gè)字符串包含另外一個(gè)字符串的次數(shù):
function countInstances(mainStr, subStr)
{
var count = 0;
var offset = 0;
do
{
offset = mainStr.indexOf(subStr, offset);
if(offset != -1)
{
count++;
offset += subStr.length;
}
}while(offset != -1)
return count;
}
String對(duì)象有一個(gè)與indexOf()對(duì)應(yīng)的方法,lastIndexOf():
strObj.lastIndexOf(substring[, startindex])
strObj為要進(jìn)行判斷的字符串,subString為要在strObj查找的子字符串,startIndex是可選的,表示查找的開(kāi)始位置(基于0的索引),如果startIndex省略,則從strObj末尾處查找,如果startIndex小于0,則從0開(kāi)始,如果startIndex大于最大索引,則從最大索引處開(kāi)始。該方法自右向左查找,返回subString在strObj中最后出現(xiàn)的位置,如果沒(méi)有找到,返回-1。
1. 在HTML里面加入JavaScript;方法非常簡(jiǎn)單,就是通過(guò)一對(duì)標(biāo)簽,然后在標(biāo)簽里面書(shū)寫(xiě)代碼即可;2. 標(biāo)簽位置;按照以前傳統(tǒng)的方法,我們的script標(biāo)簽都是放在head標(biāo)簽里面的。但是由于瀏覽器進(jìn)行渲染的時(shí)候是由上往下進(jìn)行渲染,這樣會(huì)導(dǎo)致瀏覽器在呈現(xiàn)頁(yè)面的時(shí)候出現(xiàn)延遲。延遲的時(shí)候就是空白,影響用戶(hù)體驗(yàn)。所以現(xiàn)在的方法,都是講script標(biāo)簽寫(xiě)body里面,元素的后面。;3. 外部JS文件;1)可維護(hù)性高;2)可緩存:例如有兩個(gè)HTML文件(A,B)都是用的同一個(gè)JS文件。當(dāng)用戶(hù)請(qǐng)求A頁(yè)面的時(shí)候,A頁(yè)面的HTML文件和JS文件一起被下載到本地。接下來(lái)用戶(hù)再請(qǐng)求B頁(yè)面的時(shí)候,只需要下載B頁(yè)面的HTML頁(yè)面即可,因?yàn)镴S文件已經(jīng)有了。4. JavaScript語(yǔ)法;1)JavaScript區(qū)分大小寫(xiě)test和Test表示不同變量2)標(biāo)識(shí)符;JavaScript里面的標(biāo)識(shí)符由數(shù)字,字母,下劃線(xiàn)(_)和$組成,不能以數(shù)字開(kāi)頭3)注釋?zhuān)篔avaScript注釋有兩種:多行注釋和單行注釋
做web開(kāi)發(fā)多年了,當(dāng)然會(huì)用到很多頁(yè)面上的東西,java就不說(shuō)了,有不少程序看不起javascript,這不是正確的心態(tài),因?yàn)槭强蛻?hù)端編程,作用非常大。
學(xué)習(xí)javascript,首要一定要會(huì)HTML了,然后了解CSS,知道怎么用javascript調(diào)用這些對(duì)象,
能調(diào)用到這些對(duì)象了,要去了解這些對(duì)象有哪些屬性,舉例子,body對(duì)象,有一個(gè)右鍵觸發(fā)事件,如果返回為false時(shí),IE默認(rèn)右鍵菜單就不出來(lái)了,又如iframe,如果把這個(gè)iframe包含在一個(gè)div里面,并設(shè)定運(yùn)行鼠標(biāo)按下時(shí)的方法,并進(jìn)行判斷,如果為某一類(lèi)對(duì)象時(shí),設(shè)為可根據(jù)鼠標(biāo)移動(dòng),而動(dòng),這樣子,就可以另一個(gè)頁(yè)面,放進(jìn)到這個(gè)頁(yè)面進(jìn)行移動(dòng),改寫(xiě)內(nèi)容等操作
以上是基本,對(duì)是知道有哪些對(duì)象,有什么用,怎么調(diào).
第二就是ajax,以前在沒(méi)有ajax的時(shí)候,我們也用隱藏的ifram來(lái)實(shí)現(xiàn)ajax功能,達(dá)到無(wú)刷新,與網(wǎng)站之間的交互,現(xiàn)在有了ajax,使得操作變得更加流暢。
第三就是利用以上的知識(shí),進(jìn)行CS模仿,CS的操作體驗(yàn)是很舒服的,所以web頁(yè)如果有需要,都要去完成,目前不知道有哪些CS操作模仿不了。
第四,一樣要把javascript代碼寫(xiě)成對(duì)象化,然調(diào)用的人使用方便,容易拓展。
有的人,只有沒(méi)有能力適應(yīng)多種語(yǔ)言,或總說(shuō)javascript沒(méi)用。這些人是高手中的高手,都是嘴巴說(shuō)話(huà)厲害的人。在工作過(guò)程中,總是非常多說(shuō)得比做得好聽(tīng)的人。
JavaScript作為網(wǎng)站前端的核心知識(shí)是非常重要的,但是如何學(xué)習(xí)JavaScript是很多初學(xué)者面對(duì)的一個(gè)難題,下面我說(shuō)一下個(gè)人對(duì)于如何學(xué)習(xí)JavaScript的一點(diǎn)心得,希望能幫到大家。
1、首先學(xué)習(xí)基礎(chǔ),尤其是JavaScript與其他語(yǔ)言不同的基礎(chǔ)知識(shí)。
學(xué)習(xí)每個(gè)編程語(yǔ)言可能都要從基礎(chǔ)的變量函數(shù)結(jié)構(gòu)等學(xué)起,JavaScript相對(duì)于其他的編程語(yǔ)言在基礎(chǔ)上有一些比較有特點(diǎn)的地方,這些東西是尤其需要我們注意的,比如說(shuō)自調(diào)函數(shù)、比如說(shuō)變量值為空不是null而是undefined的等,這些東西都是和主流的編程的語(yǔ)言如c++、java等是有區(qū)別的,所以想要學(xué)好JavaScript,這些基礎(chǔ)的知識(shí)一定要把握好學(xué)習(xí)好才行。
2、關(guān)于學(xué)習(xí)JavaScript的進(jìn)階
JavaScript進(jìn)階知識(shí)更是有很多難理解的東西和不同于其他語(yǔ)言的東西,這些東西都是深入學(xué)習(xí)JavaScript的難點(diǎn),簡(jiǎn)單的說(shuō)一下JavaScript是基于對(duì)象的瀏覽器腳本語(yǔ)言,但是為了使JavaScript也能夠支持面向?qū)ο缶幊蹋藗兙褪褂昧撕芏嗟姆椒▉?lái)模擬面向?qū)ο蟮牡奶攸c(diǎn),這些就變成了JavaScript的一些難點(diǎn),比如說(shuō)JavaScript的繼承要借助原型、比如JavaScript的類(lèi)需要使用構(gòu)造函數(shù)來(lái)構(gòu)造一個(gè)對(duì)象等,這些東西都是和其他支持面向?qū)ο蟮恼Z(yǔ)言是不同的,所以就導(dǎo)致了一些難點(diǎn)。關(guān)于進(jìn)階學(xué)習(xí)JavaScript,還有JavaScript一些深入的知識(shí)需要去理解比如原型鏈和閉包、比如收函數(shù)的作用域執(zhí)行流程和上下文,這些東西都是JavaScript比較深入的知識(shí)、
最后說(shuō)明,JavaScript作為前端的核心語(yǔ)言絕對(duì)沒(méi)有沒(méi)有想象的那么簡(jiǎn)單,要想學(xué)好JavaScript除了以上提到的知識(shí)和注意點(diǎn),還需要的就是多動(dòng)手和實(shí)踐,我們都知道網(wǎng)頁(yè)上的所有特效都是借助JavaScript來(lái)實(shí)現(xiàn),那么我們就需要在學(xué)習(xí)JavaScript的過(guò)程中多使用原生的JavaScript代碼實(shí)現(xiàn)一些特效,當(dāng)然學(xué)習(xí)使用jQuery等JavaScript類(lèi)庫(kù)進(jìn)行開(kāi)發(fā)也十分的重要,但是這絕對(duì)不能是取代我們學(xué)習(xí)JavaScript的方法。
第一步學(xué)習(xí)JavaEE基礎(chǔ)
Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,所以首先需要從基礎(chǔ)學(xué)起,只有前期打牢基礎(chǔ),之后深入學(xué)習(xí)才能游刃有余。那么基礎(chǔ)學(xué)習(xí)首先從基礎(chǔ)語(yǔ)法、面向?qū)ο?、核心?lèi)庫(kù)、集合、異常、IO、線(xiàn)程、網(wǎng)絡(luò)編程、反射、JDK1.8新特性這幾個(gè)方面展開(kāi),學(xué)習(xí)基礎(chǔ)階段培養(yǎng)面向?qū)ο蟮木幊趟枷?、充分理解并運(yùn)用Java面向?qū)ο笏枷雭?lái)進(jìn)行程序開(kāi)發(fā)、從過(guò)程到面向?qū)ο缶幊痰霓D(zhuǎn)變、,深入理解常用集合類(lèi)的用法、集合的特點(diǎn)、內(nèi)存理解以及使用;掌握多線(xiàn)程的概念、創(chuàng)建方式、同步、網(wǎng)絡(luò)編程的基本概念等。
第二步學(xué)習(xí)JavaWeb開(kāi)發(fā)
JavaWeb開(kāi)發(fā)是學(xué)習(xí)Java中必不可少的內(nèi)容,雖然Java是偏向于后臺(tái)開(kāi)發(fā)的,但是前后端不可能完全分離,后端開(kāi)發(fā)人員也需要掌握一定的前端技能。JavaWeb開(kāi)發(fā)可以從前端技術(shù)、MySQL、JDBCJDBCUtils、XML、服務(wù)器Servlet、JSP、AJAX幾點(diǎn)來(lái)學(xué)習(xí),以此來(lái)掌握使用HTML、CSS進(jìn)行前端界面的設(shè)計(jì)、掌握對(duì)JavaScript、JQuery基本語(yǔ)法的使用;掌握XML的解析方式、掌握服務(wù)器的概念以及其配置、熟悉Servlet開(kāi)發(fā)規(guī)范和相關(guān)概念、JSP基本原理、Session和Cookie、過(guò)濾器和監(jiān)聽(tīng)器的使用、以及Ajax異步請(qǐng)求。
第三步Java高級(jí)框架
雖然說(shuō)Java框架有很多,但是比較常用和主流的還是比較固定的,靈活的使用框架可以讓開(kāi)發(fā)者在實(shí)際開(kāi)發(fā)中,減少很多重復(fù)的代碼、讓代碼的結(jié)構(gòu)更加清晰,后期維護(hù)方便。從現(xiàn)在的開(kāi)發(fā)環(huán)境來(lái)看SpringMVC、Mybatis、Spring、Oracle、LinuxRedisNginx、Maven是現(xiàn)在普遍使用的主流框架,掌握之后可以實(shí)現(xiàn)從原理、應(yīng)用、擴(kuò)展等全方位角度熟練使用,最終可以搭建自己的平臺(tái)。
4第四步分布式項(xiàng)目實(shí)戰(zhàn)
學(xué)習(xí)的最終目的就是上手實(shí)操,根據(jù)項(xiàng)目需求開(kāi)發(fā)功能,那么實(shí)戰(zhàn)就顯得尤為重要了,所以最后一步是項(xiàng)目實(shí)戰(zhàn),那Git、SpringBoot、SpringCloud 等主流技術(shù)必定是需要熟練掌握的,通過(guò)學(xué)習(xí)掌握分布式調(diào)用技術(shù)任務(wù)調(diào)度以及項(xiàng)目相關(guān)模塊之間的開(kāi)發(fā)和關(guān)聯(lián),從而達(dá)到實(shí)現(xiàn)功能開(kāi)發(fā)目的。