js

JavaScript介紹
JavaScript是運行在瀏覽器端的腳步語言幢竹,JavaScript主要解決的是前端與用戶交互的問題,包括使用交互與數(shù)據(jù)交互宣蔚,JavaScript是瀏覽器解釋執(zhí)行的弄企。
前端三大塊
1戏挡、HTML:頁面結構
2、CSS:頁面表現(xiàn):元素大小左权、顏色、位置痴颊、隱藏或顯示赏迟、部分動畫效果
3、JavaScript:頁面行為:部分動畫效果蠢棱、頁面與用戶的交互锌杀、頁面功能

JavaScript嵌入頁面的方式
1、行間事件(主要用于事件)
<input type="button" name="" onclick="alert('ok泻仙!');">
2糕再、頁面script標簽嵌入
<script type="text/javascript">
alert('ok!');
</script>
3玉转、外部引入
<script type="text/javascript" src="js/index.js"></script>

變量突想、數(shù)據(jù)類型及基本語法規(guī)范
JavaScript 是一種弱類型語言,javascript的變量類型由它的值來決定究抓。 定義變量需要用關鍵字 'var'
var iNum = 123;
var sTr = 'asd';
//同時定義多個變量可以用","隔開猾担,公用一個‘var’關鍵字
var iNum = 45,sTr='qwe',sCount='68';

變量類型
5種基本數(shù)據(jù)類型:
1、number 數(shù)字類型
2刺下、string 字符串類型
3绑嘹、boolean 布爾類型 true 或 false
4、undefined undefined類型橘茉,變量聲明未初始化工腋,它的值就是undefined
5、null null類型畅卓,表示空對象擅腰,如果定義的變量將來準備保存對象,可以將變量初始化為null,在頁面上獲取不到對象髓介,返回的值就是null

1種復合類型:
object
javascript語句與注釋
1惕鼓、javascript語句開始可縮進也可不縮進,縮進是為了方便代碼閱讀唐础,一條javascript語句應該以“;”結尾;
<script type="text/javascript">
var iNum = 123;
var sTr = 'abc123';
function fnAlert(){
alert(sTr);
};
fnAlert();
</script>
2箱歧、javascript注釋
<script type="text/javascript">

// 單行注釋
var iNum = 123;
/*
多行注釋
1、...
2一膨、...
*/
var sTr = 'abc123';
</script>
變量呀邢、函數(shù)、屬性豹绪、函數(shù)參數(shù)命名規(guī)范
1价淌、區(qū)分大小寫
2申眼、第一個字符必須是字母、下劃線(_)或者美元符號($)
3蝉衣、其他字符可以是字母括尸、下劃線、美元符或數(shù)字

匈牙利命名風格:
對象o Object 比如:oDiv
數(shù)組a Array 比如:aItems
字符串s String 比如:sUserName
整數(shù)i Integer 比如:iItemCount
布爾值b Boolean 比如:bIsComplete
浮點數(shù)f Float 比如:fPrice
函數(shù)fn Function 比如:fnHandler
正則表達式re RegExp 比如:reEmailCheck
函數(shù)
函數(shù)就是重復執(zhí)行的代碼片病毡。

函數(shù)定義與執(zhí)行
<script type="text/javascript">
// 函數(shù)定義
function fnAlert(){
alert('hello!');
}
// 函數(shù)執(zhí)行
fnAlert();
</script>
變量與函數(shù)預解析
JavaScript解析過程分為兩個階段濒翻,先是編譯階段,然后執(zhí)行階段啦膜,在編譯階段會將function定義的函數(shù)提前有送,并且將var定義的變量聲明提前,將它賦值為undefined僧家。
<script type="text/javascript">
fnAlert(); // 彈出 hello雀摘!
alert(iNum); // 彈出 undefined
function fnAlert(){
alert('hello!');
}
var iNum = 123;
</script>
函數(shù)傳參 javascript的函數(shù)中可以傳遞參數(shù)。

<script type="text/javascript">
function fnAlert(a){
alert(a);
}
fnAlert(12345);
</script>
函數(shù)'return'關鍵字
函數(shù)中'return'關鍵字的作用:
1八拱、返回函數(shù)中的值或者對象
2阵赠、結束函數(shù)的運行
<script type="text/javascript">
function fnAdd(iNum01,iNum02){
var iRs = iNum01 + iNum02;
return iRs;
alert('here!');
}
var iCount = fnAdd(3,4);
alert(iCount); //彈出7
</script>

條件語句
通過條件來控制程序的走向,就需要用到條件語句乘粒。
條件運算符
==豌注、===、>灯萍、>=轧铁、<、<=旦棉、!=齿风、&&(而且)、||(或者)绑洛、!(否)
if else
var iNum01 = 3;
var iNum02 = 5;
var sTr;
if(iNum01>iNum02){
sTr = '大于';
}
else
{
sTr = '小于';
}
alert(sTr);
多重if else語句

var iNow = 1;
if(iNow==1)
{
... ;
}
else if(iNow==2)
{
... ;
}
else
{
... ;
}

獲取元素方法
可以使用內置對象document上的getElementById方法來獲取頁面上設置了id屬性的元素救斑,獲取到的是一個html對象,然后將它賦值給一個變量真屯,比如:
<script type="text/javascript">
var oDiv = document.getElementById('div1');
</script>
....
<div id="div1">這是一個div元素</div>
上面的語句脸候,如果把javascript寫在元素的上面,就會出錯绑蔫,因為頁面上從上往下加載執(zhí)行的运沦,javascript去頁面上獲取元素div1的時候,元素div1還沒有加載配深,解決方法有兩種:
第一種方法:將javascript放到頁面最下邊
....
<div id="div1">這是一個div元素</div>
....
<script type="text/javascript">
var oDiv = document.getElementById('div1');
</script>
</body>
第二種方法:將javascript語句放到window.onload觸發(fā)的函數(shù)里面,獲取元素的語句會在頁面加載完后才執(zhí)行携添,就不會出錯了。
<script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById('div1');
}
</script>
....
<div id="div1">這是一個div元素</div>
操作元素屬性
獲取的頁面元素篓叶,就可以對頁面元素的屬性進行操作烈掠,屬性的操作包括屬性的讀和寫羞秤。

操作元素屬性
var 變量 = 元素.屬性名 讀取屬性
元素.屬性名 = 新屬性值 改寫屬性
屬名在js中的寫法
1、html的屬性和js里面屬性寫法一樣
2左敌、“class” 屬性寫成 “className”
3瘾蛋、“style” 屬性里面的屬性,有橫杠的改成駝峰式矫限,比如:“font-size”瘦黑,改成”style.fontSize”
<script type="text/javascript">
window.onload = function(){
var oInput = document.getElementById('input1');
var oA = document.getElementById('link1');
// 讀取屬性值
var sValue = oInput.value;
var sType = oInput.type;
var sName = oInput.name;
var sLinks = oA.href;
// 寫(設置)屬性
oA.style.color = 'red';
oA.style.fontSize = sValue;
}
</script>
......
<input type="text" name="setsize" id="input1" value="20px">
<a id="link1">傳智播客</a>
innerHTML
innerHTML可以讀取或者寫入標簽包裹的內容

<script type="text/javascript">
window.onload = function(){
var oDiv = document.getElementById('div1');
//讀取
var sTxt = oDiv.innerHTML;
alert(sTxt);
//寫入
oDiv.innerHTML = '<a ;
}
</script>
......
<div id="div1">這是一個div元素</div>

事件屬性及匿名函數(shù)
事件屬性
元素上除了有樣式,id等屬性外奇唤,還有事件屬性,常用的事件屬性有鼠標點擊事件屬性(onclick)匹摇,鼠標移入事件屬性(mouseover),鼠標移出事件屬性(mouseout),將函數(shù)名稱賦值給元素事件屬性咬扇,可以將事件和函數(shù)關聯(lián)起來。
<script type="text/javascript">

window.onload = function(){
var oBtn = document.getElementById('btn1');

oBtn.onclick = myalert;

function myalert(){
    alert('ok!');
}

}
</script>
匿名函數(shù)
定義的函數(shù)可以不給名稱廊勃,這個叫做匿名函數(shù)懈贺,可以將匿名函數(shù)的定義直接賦值給元素的事件屬性來完成事件和函數(shù)的關聯(lián),這樣可以減少函數(shù)命名坡垫,并且簡化代碼梭灿。函數(shù)如果做公共函數(shù),就可以寫成匿名函數(shù)的形式冰悠。
<script type="text/javascript">
window.onload = function(){
var oBtn = document.getElementById('btn1');
/*
oBtn.onclick = myalert;
function myalert(){
alert('ok!');
}
*/
// 直接將匿名函數(shù)賦值給綁定的事件
oBtn.onclick = function (){
alert('ok!');
}
}
</script>

數(shù)組及操作方法
數(shù)組就是一組數(shù)據(jù)的集合堡妒,javascript中,數(shù)組里面的數(shù)據(jù)可以是不同類型的溉卓。

定義數(shù)組的方法
//對象的實例創(chuàng)建
var aList = new Array(1,2,3);
//直接量創(chuàng)建
var aList2 = [1,2,3,'asd'];
操作數(shù)組中數(shù)據(jù)的方法
1皮迟、獲取數(shù)組的長度:aList.length;

var aList = [1,2,3,4];
alert(aList.length); // 彈出4
2、用下標操作數(shù)組的某個數(shù)據(jù):aList[0];
var aList = [1,2,3,4];
alert(aList[0]); // 彈出1
3桑寨、join() 將數(shù)組成員通過一個分隔符合并成字符串
var aList = [1,2,3,4];
alert(aList.join('-')); // 彈出 1-2-3-4
4伏尼、push() 和 pop() 從數(shù)組最后增加成員或刪除成員
var aList = [1,2,3,4];
aList.push(5);
alert(aList); //彈出1,2,3,4,5
aList.pop();
alert(aList); // 彈出1,2,3,4
5、reverse() 將數(shù)組反轉
var aList = [1,2,3,4];
aList.reverse();
alert(aList); // 彈出4,3,2,1
6尉尾、indexOf() 返回數(shù)組中元素第一次出現(xiàn)的索引值
var aList = [1,2,3,4,1,3,4];
alert(aList.indexOf(1));
7爆阶、splice() 在數(shù)組中增加或刪除成員
var aList = [1,2,3,4];
aList.splice(2,1,7,8,9); //從第2個元素開始,刪除1個元素沙咏,然后在此位置增加'7,8,9'三個元素
alert(aList); //彈出 1,2,7,8,9,4
多維數(shù)組
多維數(shù)組指的是數(shù)組的成員也是數(shù)組的數(shù)組辨图。
var aList = [[1,2,3],['a','b','c']];
alert(aList[0][1]); //彈出2;
批量操作數(shù)組中的數(shù)據(jù),需要用到循環(huán)語句
循環(huán)語句
程序中進行有規(guī)律的重復性操作芭碍,需要用到循環(huán)語句徒役。

for循環(huán)

for(var i=0;i<len;i++)
{
......
}

1、數(shù)組去重
var aList = [1,2,3,4,4,3,2,1,2,3,4,5,6,5,5,3,3,4,2,1];

var aList2 = [];

for(var i=0;i<aList.length;i++)
{
if(aList.indexOf(aList[i])==i)
{
aList2.push(aList[i]);
}
}
alert(aList2);
2窖壕、將數(shù)組數(shù)據(jù)放入頁面

字符串處理方法
1忧勿、字符串合并操作:“ + ”
var iNum01 = 12;
var iNum02 = 24;
var sNum03 = '12';
var sTr = 'abc';
alert(iNum01+iNum02); //彈出36
alert(iNum01+sNum03); //彈出1212 數(shù)字和字符串相加等同于字符串相加
alert(sNum03+sTr); // 彈出12abc
2杉女、parseInt() 將數(shù)字字符串轉化為整數(shù)
var sNum01 = '12';
var sNum02 = '24';
var sNum03 = '12.32';
alert(sNum01+sNum02); //彈出1224
alert(parseInt(sNum01)+parseInt(sNum02)) //彈出36
alert(parseInt(sNum03)) //彈出數(shù)字12 將字符串小數(shù)轉化為數(shù)字整數(shù)
3、parseFloat() 將數(shù)字字符串轉化為小數(shù)
var sNum03 = '12.32'
alert(parseFloat(sNum03)); //彈出 12.32 將字符串小數(shù)轉化為數(shù)字小數(shù)
4鸳吸、split() 把一個字符串分隔成字符串組成的數(shù)組
var sTr = '2017-4-22';
var aRr = sTr.split("-");
var aRr2= sTr.split("");
alert(aRr); //彈出['2017','4','2']
alert(aRr2); //彈出['2','0','1','7','-','4','-','2','2']
5熏挎、indexOf() 查找字符串是否含有某字符
var sTr = "abcdefgh";
var iNum = sTr.indexOf("c");
alert(iNum); //彈出2
6、substring() 截取字符串 用法: substring(start,end)(不包括end)
var sTr = "abcdefghijkl";
var sTr2 = sTr.substring(3,5);
var sTr3 = sTr.substring(1);
alert(sTr2); //彈出 de
alert(sTr3); //彈出 bcdefghijkl
字符串反轉
var str = 'asdfj12jlsdkf098';
var str2 = str.split('').reverse().join('');
alert(str2);

定時器
定時器在javascript中的作用
1晌砾、定時調用函數(shù)
2坎拐、制作動畫
定時器類型及語法
/*
定時器:
setTimeout 只執(zhí)行一次的定時器
clearTimeout 關閉只執(zhí)行一次的定時器
setInterval 反復執(zhí)行的定時器
clearInterval 關閉反復執(zhí)行的定時器
/
var time1 = setTimeout(myalert,2000);
var time2 = setInterval(myalert,2000);
/

clearTimeout(time1);
clearInterval(time2);
*/
function myalert(){
alert('ok!');
}

變量作用域
變量作用域指的是變量的作用范圍,javascript中的變量分為全局變量和局部變量养匈。
1哼勇、全局變量:在函數(shù)之外定義的變量,為整個頁面公用呕乎,函數(shù)內部外部都可以訪問积担。
2、局部變量:在函數(shù)內部定義的變量猬仁,只能在定義該變量的函數(shù)內部訪問帝璧,外部無法訪問。
<script type="text/javascript">
// 定義全局變量
var a = 12;
function myalert()
{
// 定義局部變量
var b = 23;
alert(a);
// 修改全局變量
a++;
alert(b);
}
myalert(); // 彈出12和23
alert(a); // 彈出13
alert(b); // 出錯
</script>

封閉函數(shù)
封閉函數(shù)是javascript中匿名函數(shù)的另外一種寫法湿刽,創(chuàng)建一個一開始就執(zhí)行而不用命名的函數(shù)的烁。
一般定義的函數(shù)和執(zhí)行函數(shù):
function myalert(){
alert('hello!');
};
myalert();
封閉函數(shù):
(function(){
alert('hello!');
})();
還可以在函數(shù)定義前加上“~”和“!”等符號來定義匿名函數(shù)
!function(){
alert('hello!');
}()
封閉函數(shù)的作用
封閉函數(shù)可以創(chuàng)造一個獨立的空間,在封閉函數(shù)內定義的變量和函數(shù)不會影響外部同名的函數(shù)和變量诈闺,可以避免命名沖突渴庆,在頁面上引入多個js文件時,用這種方式添加js文件比較安全买雾,比如:
var iNum01 = 12;
function myalert(){
alert('hello!');
}
(function(){
var iNum01 = 24;
function myalert(){
alert('hello!world');
}
alert(iNum01);
myalert()
})()
alert(iNum01);
myalert();

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末把曼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漓穿,更是在濱河造成了極大的恐慌嗤军,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晃危,死亡現(xiàn)場離奇詭異叙赚,居然都是意外死亡,警方通過查閱死者的電腦和手機僚饭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門震叮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳍鸵,你說我怎么就攤上這事苇瓣。” “怎么了偿乖?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵击罪,是天一觀的道長哲嘲。 經(jīng)常有香客問我,道長媳禁,這世上最難降的妖魔是什么眠副? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮竣稽,結果婚禮上囱怕,老公的妹妹穿的比我還像新娘。我一直安慰自己毫别,他們只是感情好娃弓,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岛宦,像睡著了一般忘闻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恋博,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機與錄音私恬,去河邊找鬼债沮。 笑死,一個胖子當著我的面吹牛本鸣,可吹牛的內容都是我干的疫衩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼荣德,長吁一口氣:“原來是場噩夢啊……” “哼闷煤!你這毒婦竟也來了?” 一聲冷哼從身側響起涮瞻,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鲤拿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后署咽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體近顷,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年宁否,在試婚紗的時候發(fā)現(xiàn)自己被綠了窒升。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡慕匠,死狀恐怖饱须,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情台谊,我是刑警寧澤蓉媳,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布譬挚,位于F島的核電站,受9級特大地震影響督怜,放射性物質發(fā)生泄漏殴瘦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一号杠、第九天 我趴在偏房一處隱蔽的房頂上張望蚪腋。 院中可真熱鬧,春花似錦姨蟋、人聲如沸屉凯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悠砚。三九已至,卻和暖如春堂飞,著一層夾襖步出監(jiān)牢的瞬間灌旧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工绰筛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枢泰,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓铝噩,卻偏偏與公主長得像衡蚂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骏庸,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品毛甲,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式具被。簡單...
    舟漁行舟閱讀 7,758評論 2 17
  • 1.行級元素有哪些玻募?塊級元素有哪些?行級元素如何轉換成塊級元素一姿? block元素的特點: 1.總在新行開始补箍,2.高...
    我的天氣很好啦閱讀 1,526評論 2 9
  • 第一章1,什么叫程序:程序就是計算機按照人類完成事物的步驟和邏輯,通過計算機命令來逐步執(zhí)行最終實現(xiàn)目標的一種機器語...
    悟名先生閱讀 952評論 0 4
  • 第一章: JS簡介 從當初簡單的語言啸蜜,變成了現(xiàn)在能夠處理復雜計算和交互坑雅,擁有閉包、匿名函數(shù)衬横, 甚至元編程等...
    LaBaby_閱讀 1,667評論 0 6
  • JS使用技巧專題 1開發(fā)技巧 1.1函數(shù)使用 1.1.1函數(shù)聲明方式 JS函數(shù)的寫法總結 http://blog....
    Kevin_Junbaozi閱讀 1,083評論 0 11