Web開發(fā)快速入門基礎(chǔ)篇(4)前端基礎(chǔ)之JS

4.前端基礎(chǔ)之JS

簡述

掌握了解
JavaScript(js)的基本使用,以及jquery常用操作,能夠處理前端交互,使用ajax請求數(shù)據(jù)微驶。

JS基礎(chǔ)

js代碼必須位于 <script> 與 </script> 標(biāo)簽之間
建議寫在html頁面最底部沈撞,因為瀏覽器加載順序從上至下,代碼最后運行
js有不同版本害驹,es5,es6移国,有一些新特性,如果使用新特性荷逞,需考慮兼容性媒咳。就像php5 php7語言的不同版本

輸出

兩種基本輸出方式,方便調(diào)試代碼
打印在控制臺种远,瀏覽器開發(fā)者工具console
console.log('xxxx');

建議選擇該方式涩澡,因為可以顯示更多內(nèi)容更詳細,數(shù)組等
每一條語句通常分號結(jié)尾

彈出對話框
alert('xxx');

數(shù)據(jù)類型

數(shù)字
字符串坠敷,可以使用單引號或雙引號

數(shù)組

//方式1
var cars=new Array();
cars[0]="Saab";
//方式2
var cars=["Saab","Volvo","BMW"];
以上兩種比較常用

//方式3
var cars=new Array("Saab","Volvo","BMW");

操作數(shù)組
cars[0]

二維數(shù)組

var xxx=[
    [1,2],
    [a,b]
]; 

對象

var person = {
firstName:"John", 
lastName:"Doe", 
age:50, 
eyeColor:"blue"
};

操作對象
var age = person.age;

變量聲明var a = 5; 使用var聲明創(chuàng)建變量

函數(shù)

function xxx(a,b){
 var c = a+b;
 return c;
}

常用語句

加減乘除
= + - * /

判斷比較
!=不等于
等于==
大于>小于<

與或非
(a>1)&&(b>1) 只有兩邊都正確妙同,返回true
(a>1)||(b>1) 任何一個正確,反正true
! 否定

條件
if else

if (condition){    
當(dāng)條件為 true 時執(zhí)行的代碼
}else{    
當(dāng)條件不為 true 時執(zhí)行的代碼
}

多種情況時膝迎,增加else if(condition1)
適用情況最多粥帚,一般情況判斷用if else即可

switch(n){       
case 1:                n=1時執(zhí)行代碼塊 1         break;
case 2:                執(zhí)行代碼塊 2                break;
default:                與 case 1 和 case 2 不同時執(zhí)行的代碼
}

當(dāng)情況很多,進行匹配限次,用switch
注意不要漏掉break
如根據(jù)返回結(jié)果值匹配芒涡,如訂單處理,根據(jù)返回訂單狀態(tài)status卖漫,進行不同處理

三目運算符
var a =(age<18) ? "年齡太小":"年齡已達到";

如果變量 age 中的值小于 18费尽,則向變量 a 賦值 "年齡太小",否則賦值 "年齡已達到"懊亡。
很常用的判斷用法依啰,適合簡單的判斷不要都用if else

循環(huán)
1.for循環(huán),最常用
for (var i=0;i<cars.length;i++)
執(zhí)行代碼
}

通常循環(huán)數(shù)組內(nèi)容店枣,當(dāng)i<數(shù)組cars的長度速警,即為循環(huán)數(shù)組
配合數(shù)組.length 獲取數(shù)組長度

2.For/In 循環(huán)
3.while
4.do while

語句部分,大多數(shù)編程語言寫法很相似鸯两,基本上通用闷旧,個別地方不同

this
表示當(dāng)前的引用
注意不同情況下this指代內(nèi)容不同

Json
json是用來js和后端服務(wù)器交互的通用數(shù)據(jù)形式API接口通常返回的數(shù)據(jù)也是json形式
json形式和js的對象相似

{"sites":[    {"name":"Runoob", "url":"www.runoob.com"},    {"name":"Google", "url":"www.google.com"},    {"name":"Taobao", "url":"www.taobao.com"}
]}

JSON.parse()钧唐,解析json忙灼,用于將一個 JSON 字符串轉(zhuǎn)換為 JavaScript 對象。
JSON.stringify()用于將 JavaScript 值轉(zhuǎn)換為 JSON 字符串。

正則表達式
適用于處理匹配字符串该园,通常用于匹配文本內(nèi)容
如酸舍,判斷用戶發(fā)表內(nèi)容是否有 wx號,手機號里初,檢測廣告
較多內(nèi)容啃勉,此處不展開

常用函數(shù)

1.瀏覽器相關(guān)
window.location.href = "url地址如xxx.com"; 打開新頁面
window.history.back(); 返回上一頁

2.數(shù)組操作
x.length; 數(shù)組長度
x.indexOf("a"); 看a在數(shù)組中位置,常用來判斷數(shù)組中是否存在a
x.push("a"); 數(shù)組末尾追加新元素
x.concat(a); 數(shù)組x合并數(shù)組a双妨,返回合并后數(shù)組
x.sort(); 數(shù)組排序

3.字符串操作
x.length; 字符串長度
x.concat(a); 兩個字符串x和a連接
x.indexOf("a"); 常用來判斷字符串中是否存在a

replace() 方法用于在字符串中用一些字符替換另一些字符
substr() 方法可在字符串中抽取從指定下標(biāo)開始的指定數(shù)目的字符
substring() 方法用于提取字符串中介于兩個指定下標(biāo)之間的字符淮阐。

4.計時器
setInterval()
不斷執(zhí)行,間隔指定的毫秒數(shù)不停地執(zhí)行指定的代碼刁品。
setTimeout()
倒計時泣特,在指定的毫秒數(shù)后執(zhí)行指定代碼。

這兩個適用于寫一些定時操作挑随,如状您,定時刷新加載數(shù)據(jù),時間限制倒計時

5.數(shù)據(jù)類型轉(zhuǎn)換
parseInt(x) 轉(zhuǎn)換為整數(shù)

parseFloat(x) 轉(zhuǎn)換為小數(shù)

xx.toFixed(2) 保留兩位小數(shù)

6.時間操作
new Date() // 當(dāng)前日期和時間

var timestamp = new Date().getTime(); //當(dāng)前時間戳

時間戳與日期格式轉(zhuǎn)換

function timestampToTime(timestamp) {
var  date = new Date(timestamp * 1000);
//時間戳為10位需* 1000镀裤,時間戳為13位的話不需乘1000
var Y = date.getFullYear() + '-';
var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
var D = date.getDate() + ' ';
var h = date.getHours() + ':';
var m = date.getMinutes() + ':';
var s = date.getSeconds();
return Y+M+D+h+m+s;
}

常用事件

事件在用戶的操作后觸發(fā)執(zhí)行竞阐,如點擊某個按鈕后,執(zhí)行click點擊事件對應(yīng)函數(shù)內(nèi)容
事件操作通常配合jquery使用

onclick 鼠標(biāo)點擊某個對象
onchange用戶改變域的內(nèi)容暑劝,如改變input內(nèi)容
onblur元素失去焦點
onkeydown某個鍵盤的鍵被按下
onsubmit提交按鈕被點擊

Ajax

ajax就是異步更新的技術(shù)骆莹,簡單說不刷新頁面的情況下,get或者post和后端服務(wù)器交互

最常用的交互方法担猛,用來請求數(shù)據(jù)
通常傳統(tǒng)頁面幕垦,get或者post數(shù)據(jù)需要刷新網(wǎng)頁,體驗不好傅联,使用ajax先改,不需要重新刷新頁面,即可與后端交互數(shù)據(jù)
通常配合jquery蒸走,因為jq封裝簡化了ajax寫法
雖然很方便仇奶,無需刷新,但是傳統(tǒng)form表單方式使用也不可忽視

$.ajax({
url: "url地址xx.com/xx",  //請求的接口地址
data: {name: 'jenny'},  //發(fā)送的數(shù)據(jù)內(nèi)容
type: "POST",  //形式get或者post
dataType: "json",   //數(shù)據(jù)json形式
success: function(data) {
        //成功后執(zhí)行的代碼
    }
});

form表單提交
serialize() 方法通過序列化表單值 比驻,獲取表單form的內(nèi)容该溯,不需要一個一個獲取表單中的值
$(".form").serialize();

此外有簡寫方法

//get方法

$.get(
"接口url",  
{key1:"value1",key2:"value2"}, //請求內(nèi)容
function(data){
//成功后執(zhí)行的代碼
});

//post方法
$.post(
"接口url",  
{key1:"value1",key2:"value2"}, //請求內(nèi)容
function(data){
//成功后執(zhí)行的代碼
});

注意ajax跨域情況,是一種安全策略别惦,js只能操作自己域下的資源狈茉,其他域不能訪問

常用方案1,后端允許跨域掸掸,并返回jsonp數(shù)據(jù)
方案2氯庆,后端做代理蹭秋,寫一個API接口,后端請求數(shù)據(jù)并返回堤撵,前端ajax請求該代理API仁讨,避免跨域

Jquery基礎(chǔ)

jquery就是一個js的函數(shù)庫,簡化代碼寫法粒督,更加方便
常用來操作html元素陪竿,事件處理,ajax

使用前屠橄,必須引入

<script src="jquery.min.js"></script>
src可以是網(wǎng)絡(luò)地址如知名cdn庫提供的地址,可以是本地地址

min.js 通常代表壓縮過的js文件闰挡,如果下載其他js插件锐墙,有很多,選擇min.js一般是壓縮過的长酗,文件更小溪北,加載快

就緒事件

防止在網(wǎng)頁沒有加載完成之前運行,jq寫在此處夺脾,表示加載完后運行jq代碼

$(function(){   
// 開始寫 jQuery 代碼
});

選擇器

用來選擇某個元素之拨,如某個按鈕,選擇后即可執(zhí)行該元素的相關(guān)操作咧叭,如事件處理蚀乔,修改元素內(nèi)容

id選擇
$("#test")

class選擇
$(".test")

事件處理

點擊事件

$(".test").click(function(){  
$(this).hide();
});

class為test的元素(如button按鈕)點擊后,執(zhí)行的代碼

此處hide隱藏該元素菲茬,對應(yīng)的show顯示元素
該寫法為jq事件通用寫法吉挣,其他事件修改事件名稱即可,如click改成focus變?yōu)?focus事件
此處this代表當(dāng)前元素婉弹,事件操作中常用this

鍵盤事件
keypress
keyup
keydown

鼠標(biāo)懸停hover()

表單相關(guān)
change()內(nèi)容改變睬魂,如input框內(nèi)容改變
submit() 表單提交

元素獲得焦點
focus()
失去焦點
blur()

操作元素內(nèi)容

兩種功能
1.設(shè)置,修改元素值
2.獲取镀赌,獲取當(dāng)前值

text() - 設(shè)置或返回所選元素的文本內(nèi)容
html() - 設(shè)置或返回所選元素的內(nèi)容(包括 HTML 標(biāo)記)氯哮,如設(shè)置某個div的內(nèi)容

append() 方法,在元素結(jié)尾(通常如div商佛,p)追加內(nèi)容

val() - 設(shè)置或返回表單字段的值

$(".test2").html("<b>Hello world!</b>");

使用場景舉例
ajax加載請求商品列表
1.ajax請求獲取數(shù)據(jù)
2.因為獲取的是數(shù)據(jù)不是html喉钢,因此將處理過的要展示的商品數(shù)據(jù)拼接html代碼
3.設(shè)置在某個div顯示
追加append或者設(shè)置html

設(shè)置屬性attr()
如來設(shè)置href,title等屬性

操作class

hasClass()檢查被選元素是否包含指定的 class 名稱

addClass()
向被選元素添加一個或多個類

removeClass()
從被選元素刪除一個或多個類

toggleClass() 方法威彰,該方法對被選元素進行添加/刪除類的切換操作

使用場景舉例
操作css出牧,通常用來改變顯示效果,不同的類class有不同的css效果歇盼,給某元素添加了類class之后舔痕,該元素有了類的css效果

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伯复,更是在濱河造成了極大的恐慌慨代,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件啸如,死亡現(xiàn)場離奇詭異侍匙,居然都是意外死亡,警方通過查閱死者的電腦和手機叮雳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門想暗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人帘不,你說我怎么就攤上這事说莫。” “怎么了寞焙?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵储狭,是天一觀的道長。 經(jīng)常有香客問我捣郊,道長辽狈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任呛牲,我火速辦了婚禮刮萌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侈净。我一直安慰自己尊勿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布畜侦。 她就那樣靜靜地躺著元扔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旋膳。 梳的紋絲不亂的頭發(fā)上澎语,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音验懊,去河邊找鬼擅羞。 笑死,一個胖子當(dāng)著我的面吹牛义图,可吹牛的內(nèi)容都是我干的减俏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碱工,長吁一口氣:“原來是場噩夢啊……” “哼娃承!你這毒婦竟也來了奏夫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤历筝,失蹤者是張志新(化名)和其女友劉穎酗昼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梳猪,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡麻削,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了春弥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呛哟。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惕稻,靈堂內(nèi)的尸體忽然破棺而出竖共,到底是詐尸還是另有隱情,我是刑警寧澤俺祠,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站借帘,受9級特大地震影響蜘渣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜肺然,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一蔫缸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧际起,春花似錦拾碌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灾前,卻和暖如春防症,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哎甲。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工蔫敲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人炭玫。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓奈嘿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親吞加。 傳聞我的和親對象是個殘疾皇子裙犹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容