生活随笔
收集整理的這篇文章主要介紹了
大数据WEB阶段(四)JavaScript
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JavaScript
一、JavaScript概述
JavaScript簡(jiǎn)稱(chēng)js js是干什么的? HTML定義了網(wǎng)絡(luò)的內(nèi)容 CSS描述了網(wǎng)頁(yè)的布局 js定義了網(wǎng)頁(yè)的行為 js與java的關(guān)系 java與javaScript本質(zhì)上沒(méi)有任何關(guān)系 。 只是JavaScript蹭了java的熱度而已 。 js 的特點(diǎn) js是腳本語(yǔ)言 , 不需要編譯 , 世界試運(yùn)行的語(yǔ)言 。 js是可插入html頁(yè)面 的編程代碼 , 可有所有的瀏覽器執(zhí)行 。 js是 基于(是基于 , 而不是面向 )對(duì)象 ,弱類(lèi)型的語(yǔ)言 。 js的學(xué)習(xí)很容易 。 js優(yōu)點(diǎn) 交互性: 可以與用戶(hù)動(dòng)態(tài)交互 安全性: 只能在瀏覽器內(nèi)運(yùn)行 , 不能訪(fǎng)問(wèn)本地硬盤(pán)或其他資源 。 跨平臺(tái): 只要有瀏覽器就行 , 與操作環(huán)境沒(méi)有關(guān)系 。
二、在html中引入js代碼
直接在html中編寫(xiě)js代碼
一般推薦把js代碼寫(xiě)到head中 。
<html><head><title>標(biāo)題</title><script type="text/javascript">//js代碼</script></head>
</html>
引入外部文件
如果js代碼非常多的情況下 , 可以將js代碼 抽取到一個(gè)獨(dú)立的js文件中 ,在html中通過(guò)script標(biāo)簽引入js文件 。 注意: 如果是用script引入外部js文件 , 則在script便簽內(nèi)部你不要寫(xiě)js代碼 , 并且標(biāo)簽不要寫(xiě)成自閉 形式 , 否則 可能會(huì)導(dǎo)致引入失敗的問(wèn)題 。
<script type="text/javascript" src="demo.js"></script>
三、js語(yǔ)法
注釋
1. 單行注釋: //注釋 內(nèi)容
2. 多行注釋: /*注釋內(nèi)容*/
數(shù)據(jù)類(lèi)型 基本數(shù)據(jù)類(lèi)型 js中基本數(shù)據(jù)類(lèi)型有五種: 數(shù)值型(number)、布爾型(boolean) 、 字符串類(lèi)型(String) 、 undefined類(lèi)型 、 null 數(shù)值類(lèi)型 在js中 , 所有的數(shù)值底層都是浮點(diǎn)型 , 在需要時(shí) , 整型和 浮點(diǎn)型會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換 。 例如: 2.4+3.6 = 6 特殊值 Infinity 正無(wú)窮大 -Infinity 負(fù)無(wú)窮大 NaN (not a number) 非數(shù)字: NaN與任何數(shù)都不相等 , 包括他自己本身 , 如果要判斷一個(gè)數(shù)是不是一個(gè)非數(shù)字 , 不能用NaN == xx 來(lái)判斷, 而是應(yīng)該用isNaN(xx)進(jìn)行判斷 。 在js中數(shù)值類(lèi)型有對(duì)應(yīng)的包裝類(lèi) — Number 字符串類(lèi)型 在js中字符串類(lèi)型是基本數(shù)據(jù)類(lèi)型的一種 , 可以用單引號(hào)或雙引號(hào)引起來(lái) 。 例如 : var s1 = “a”; var s2 =’b’; 在 js中 , 為string類(lèi)型提供了對(duì)應(yīng)的包裝類(lèi)對(duì)象String 布爾類(lèi)型 boolean值為true或false 在js中 , 為boolean類(lèi)提供了對(duì)應(yīng)的包裝類(lèi) –Boolean undefined undefined類(lèi)型的值只有一個(gè)就是undefined , 表示變量未定義 , 如果聲明 了一個(gè)變量但是沒(méi)有初始化, 那么值就是undefined null null的值也是只有一個(gè) , 就是null 。 表示 此處的值現(xiàn)在為空。 常用了 作為函數(shù)的返回值 , 便是返回值是一個(gè)空對(duì)象 。 復(fù)雜數(shù)據(jù)類(lèi)型 對(duì)象(普通對(duì)象 、 數(shù)組 、 函數(shù)) js中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換 數(shù)值類(lèi)型: 轉(zhuǎn)換字符串類(lèi)型 , 直接轉(zhuǎn)換成對(duì)應(yīng)值的字符串 。 3 –>“3” 轉(zhuǎn)布爾類(lèi)型 , 0和NaN轉(zhuǎn)換成false , 其他值轉(zhuǎn)換成true 在需要時(shí)會(huì)自動(dòng)轉(zhuǎn)化成對(duì)應(yīng)的包裝類(lèi) 100–>new Number(100); 字符串類(lèi)型 空字符串(“”)轉(zhuǎn)化成數(shù)值為0 , 轉(zhuǎn)換成boolean為false。 非空純數(shù)值字符串(“123”) , 轉(zhuǎn)換為對(duì)應(yīng) 的數(shù)值, 轉(zhuǎn)boolean為true 非空非數(shù)值字符串 (“adf”) , 轉(zhuǎn)數(shù)值為NaN ,轉(zhuǎn) boolean 為true 在需要的時(shí)候 , 會(huì)自動(dòng)轉(zhuǎn)換成對(duì)應(yīng)的包裝對(duì)象 “aaa”–> new String(“aaa”); 布爾類(lèi)型: true : 轉(zhuǎn)數(shù)值為1 , 轉(zhuǎn)字符串為”true” false : 轉(zhuǎn)數(shù)值為0 , 轉(zhuǎn)字符串為“false” 在需要時(shí) , 會(huì)自動(dòng)轉(zhuǎn)換為對(duì)應(yīng)的包裝對(duì)象 undefined 轉(zhuǎn) 數(shù)值為NaN , 轉(zhuǎn)字符串為“undefined” , 轉(zhuǎn)布爾為 false , 轉(zhuǎn)對(duì)象會(huì)拋異常 null 轉(zhuǎn)數(shù)值為0 , 轉(zhuǎn)字符串 為“null” , 轉(zhuǎn)布爾值為false , 轉(zhuǎn)對(duì)象對(duì)拋異常 。 變量的定義 在js中有數(shù)據(jù)類(lèi)型 , 但是變量不區(qū)分類(lèi)型 , 所以稱(chēng)js是一門(mén)弱類(lèi)型的語(yǔ)言 。 在js中通過(guò) var關(guān)鍵字聲明變量 , 變量不區(qū)分類(lèi)型 , 可以指向任意類(lèi)型的值 運(yùn)算符
js中的運(yùn)算符和java中運(yùn)算符大致相同 js中與java運(yùn)算負(fù)的 不同之處:
比較運(yùn)算符 “==”與“===” ==在進(jìn)行比較時(shí) , 如果兩端的數(shù)據(jù)類(lèi)型不一樣 , 則先自動(dòng)轉(zhuǎn)換為同一種類(lèi)型在進(jìn)行比較 ===在比較時(shí)更為嚴(yán)格 ,如果兩端 數(shù)據(jù)類(lèi)型不一樣則 直接返回false ,, 如果數(shù)據(jù)類(lèi)型一樣再去比較值 。 typeof:
用類(lèi)返回變量\常量\表達(dá)式的數(shù)據(jù)類(lèi)型
var x = 123 ; typeof x;
delete : 用類(lèi)刪除數(shù)組中的元素或者刪除對(duì)象中的屬性或方法
var arr = [123,"sd",true]; delete arr[1];
語(yǔ)句 js中語(yǔ)句與java中的語(yǔ)句也大致相同 , 不做贅述。 函數(shù)
用function關(guān)鍵字來(lái) 定義 一個(gè)函數(shù)
function 函數(shù)名(參數(shù)列表){//函數(shù)體
}
用函數(shù)表達(dá)式來(lái)定義一個(gè)函數(shù)
var 函數(shù)名 = function(參數(shù)列表){//函數(shù)體
}
數(shù)組
通過(guò)Array()構(gòu)造函數(shù)來(lái)創(chuàng)建數(shù)組
var arr1 = new Array();//創(chuàng)建一個(gè)空數(shù)組
var arr2 = new Array(10);//創(chuàng)建一個(gè)初始容量為10的數(shù)組
var arr3 = new Array(11,"ddef",true);//創(chuàng)建一個(gè)具有指定初始值的數(shù)組
通過(guò) 數(shù)組直接量來(lái)創(chuàng)建數(shù)組
var arr1 = [];//創(chuàng)建一個(gè)空數(shù)組
var arr2 = [22,"df",,true];//創(chuàng)建一個(gè)具有指定初始值的數(shù)組
數(shù)組中的細(xì)節(jié)問(wèn)題 數(shù)組 的長(zhǎng)度可以任意改變 如果數(shù)組中某一位置沒(méi)有元素 , 則值為 undefined js中數(shù)組可以存放任意類(lèi)型的數(shù)據(jù) js內(nèi)置對(duì)象
String對(duì)象
創(chuàng)建
var str1 = new String("df");
var str2 = "sd";
常用方法和屬性 str.length 獲取字符串的長(zhǎng)度 str.charAt(index); 獲取指定位置的字符 str.indexof(subStrng , startIndex); 獲取從指定位置開(kāi)始子字符串 第一次穿線(xiàn)的位置 str.lastof(subString , startIndex); 獲取從指定位置開(kāi)始 , 子字符串最后一次出現(xiàn)的位置 。 str.spilt(delimiter) 將字符串 按照指定字符分割為字符數(shù)組 。 str.slice(start ,end) 提取 字符串的某個(gè)部分 , 含頭不含尾 str.substr(start , length); 返回 從指定位置開(kāi)始的指定長(zhǎng)度的字符串 。 str.tolowerCase() 將字符串中的字符全部轉(zhuǎn)為小寫(xiě) str.toUpperCase() 將字符串中的字符全部轉(zhuǎn)為大寫(xiě) str.match(trgexp) 在字符串中查找指定匹配正則表達(dá)式 的值 str.replace(regexp , replaceText) 字符串中匹配 正則表達(dá)式的值替換 為 其他值 str.search(regexp) 查找與 正則表達(dá)式匹配的第一個(gè)子字符串的位置 。 RegExp對(duì)象(正則表達(dá)式)
創(chuàng)建:
var reg1 = new RegExp("xxxx");
var reg2 = /xxxx/;
標(biāo)識(shí)符 g :Global 全局查找 i :IgnoreCase 忽略大小寫(xiě) 如果證則表達(dá)式需要 從頭到尾匹配 , 需要以”^”開(kāi)頭 , 以“$”結(jié)尾 reg1.test(str) 檢查此字符串是否否和 該正則表達(dá)式 Array對(duì)象
創(chuàng)建:
var arr1 = new Array();
var arr2 = [];
常用方法和屬性 arr.length 后去 數(shù)組中元素的個(gè)數(shù) arr.concat(arr1,arr2,arr3) 將多個(gè)數(shù)組合并成一個(gè)數(shù)組 arr.join(String) 將數(shù)組中的元素按照指定的字符連接起來(lái)稱(chēng)為一個(gè)字符串。 arr.reverse() j將數(shù)組反轉(zhuǎn) arr.slice(start , end) 返回?cái)?shù)字 中的一端 arr.splice(start , deleteCount ,value) 從數(shù)組中移除 一個(gè) 或多個(gè)元素 , 如果有必要的話(huà)在所移除的位置插入新的元素 , 并返貨回所有的移除的元素 。 arr.pop() 移除數(shù)組中最后一個(gè)元素 , 并返回該元素 arr.push() 在數(shù)組的末尾 添加元素 , 并返回?cái)?shù)組的長(zhǎng)度 arr.shift() 移除數(shù)組中的第一個(gè)元素, 并返回該元素 arr.unshift() 為數(shù)組的開(kāi)頭添加元素 , 并返回?cái)?shù)組的新長(zhǎng)度 。 arr.sort() 返回排序后的數(shù)組 (默認(rèn)字典排序) date對(duì)象
創(chuàng)建:
var date1 = new Date();//當(dāng)前時(shí)間
var date2 = new Date(年, 月 , 日,[時(shí), 分 , 秒]);//指定時(shí)間 , 可以只有 年月日
注意: 指定時(shí)間時(shí) 月份是從0開(kāi)始的
常用方法
data.toLocaleString() 把日期(一個(gè)數(shù)值)轉(zhuǎn)變成本地日期格式字符串
例如:var date2 = new Date(2008,7,8); date2.toLocaleString();
// "2008/8/8 上午12:00:00"
data.getFullYear() 獲取日期對(duì)象中所表示時(shí)間的年份
data.getMonth() 獲取日期對(duì)象中所表示時(shí)間的月份,返回一個(gè) 0 到 11 之間的整數(shù),0表示一月。 data.getDate() 獲取日期對(duì)象中所表示一個(gè)月的日期值,返回值是一個(gè)處于 1 到 31 之間的整數(shù),代表了相應(yīng)的日期值。 data.getDay() 獲取日期對(duì)象中所表示一個(gè)周的日期值。 返回的值是一個(gè)處于 0 到 6 之間的整數(shù),0表示周日,6表示周六。 data.getTime() 返回從 1970 年 1 月 1 日至指定時(shí)間的毫秒數(shù)。 Math對(duì)象 Math可以直接拿來(lái)用 常用方法和屬性 Math.PI 返回圓周率的值,約等于 3.141592653589793。 Math.exp(number) 返回 e(自然對(duì)數(shù)的底)的冪。 Math.abs(number) 返回?cái)?shù)字的絕對(duì)值。 Math.ceil(number) 向上取整 Math.floor(number) 向下取整 Math.round(number) 四舍五入到整數(shù) Math.random() 返回介于 0 和 1 之間的偽隨機(jī)數(shù)。 全局對(duì)象
全局對(duì)象沒(méi)有語(yǔ)法 直接調(diào)用其方法 parseFloat(numString) 將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)。
例如:parseFloat("13.14") // 返回number類(lèi)型的13.14
parseInt(numString) 將字符串轉(zhuǎn)成整數(shù),非四舍五入。
例如:parseInt("9.99") // 返回number類(lèi)型的9
isNaN(numValue) 判斷一個(gè)值是否為非數(shù)字。
例如: isNaN("abc") // true
isNaN("123") // false
eval(codeString) 判斷一個(gè)字符串并將其以腳本代碼的形式執(zhí)行
例如:eval("alert(1+2)"); //會(huì)直接將"alert(1+2)"當(dāng)作代碼執(zhí)行,彈出3
自定義對(duì)象
方式一 :構(gòu)造函數(shù)定義對(duì)象
function Person(){} // 定義一個(gè)空的Person對(duì)象function Person2(參數(shù)1,參數(shù)2...){對(duì)象內(nèi)容...
} //定義一個(gè)帶參數(shù)的對(duì)象
方式二:對(duì)象直接量
var p3 = {"key1" : "value1","key2" : "value2".........
}
對(duì)象中取值:
P3.key1 或者 p3["key1"]
案例:
四、DHTML
DHTML概述 DHTML: Dynamic HTML 動(dòng)態(tài)的 html DHTML并不是一門(mén)新的技術(shù), 而是將現(xiàn)有的HTML, CSS, JavaScript整合在一起, 形成了DHTML技術(shù) DHTML分為BOM和DOM。 BOM:Browse Object Modle 即瀏覽器對(duì)象模型,其中封裝了瀏覽器操作相關(guān)對(duì)象。 DOM:Document Object Modle 即文檔對(duì)象模型,將整個(gè)HTML文檔按照文檔結(jié)構(gòu)組織成了樹(shù)形結(jié)構(gòu)。 BOM
Window對(duì)象 此對(duì)象為全局對(duì)象,因此,調(diào)用方法或?qū)傩詴r(shí),可以省略window。 常用事件: onclick事件 – 當(dāng)窗口被點(diǎn)擊時(shí)觸發(fā) onfocus事件 – 當(dāng)窗口獲得焦點(diǎn)時(shí)觸發(fā) onblur事件 – 當(dāng)窗口失去焦點(diǎn)時(shí)觸發(fā) onload事件 – 當(dāng)整個(gè)html文檔加載完之后立即觸發(fā) 常用方法: alert() – 消息對(duì)話(huà)框 confirm() – 確認(rèn)對(duì)話(huà)框 location對(duì)象 屬性:href 獲取 或 設(shè)置 瀏覽器地址欄的url 案例:
<!-- BOM --><script type="text/javascript">//window對(duì)象//1.在按鈕點(diǎn)擊時(shí)彈出提示框function clickfn(){alert("按鈕被點(diǎn)擊");}//2.輸入框1獲得焦點(diǎn)時(shí)彈出提示框function focusfn(){alert("輸入框1獲得焦點(diǎn) ");}//3.輸入框2失去焦點(diǎn)時(shí)彈出提示框function blurfn (){alert("輸入框2失去焦點(diǎn)");}//4.彈出輸入框3中的value值onload=function(){//獲取輸入框3的input按鈕var inp = document.getElementById("input3");alert(inp.value);}//5.點(diǎn)擊刪除商品按鈕,彈出提示是否刪除,如果確定,則彈出商品已刪除,否則彈出商品還在function delfn(){if(confirm("確認(rèn)刪除商品?")){alert("商品已刪除");}else{alert("商品還在");}}//location對(duì)象//1.彈出當(dāng)前urlalert(location.href);//2.將頁(yè)面url設(shè)置為"http://www.baidu.com"alert("此頁(yè)面將跳轉(zhuǎn)到tmooc");location.href = "http://www.baidu.com";</script>
DOM
獲取元素 document.getElementById(“id值”); 通過(guò)id值獲取指定id的元素 document.getElementsByName(“name屬性值”); 通過(guò)name屬性獲取指定name值的所有元素組成的集合數(shù)組 document.getElementsByTagName(“元素名”); 通過(guò)元素的名稱(chēng)獲取指定元素名的所有元素組成的集合數(shù)組 value屬性: 獲取或設(shè)置輸入框的value值 innerText: (部分瀏覽器不支持) 獲取或設(shè)置元素內(nèi)的文本內(nèi)容 innerHTML: 獲取或設(shè)置元素的html內(nèi)容 元素的增刪改 docuemnt.createElement(“div”); 創(chuàng)建一個(gè)div元素 body.appendChild(oDiv); 往body中追加一個(gè)子元素 body.removeChild(oDiv); 刪除oDiv子元素 body.replaceChild(oNewDiv, oDiv); 用oNewDiv替換已有的子元素oDiv body.insertBefore(oDiv1, oDiv); 往body中插入一個(gè)子元素oDiv1, 子元素是插入在oDiv的前面 oDiv.cloneNode([boolean]); 克隆 oDiv元素, 參數(shù)默認(rèn)值為false, 表示只克隆元素本身, 不克隆oDiv內(nèi)的所有子孫元素, 如果希望克隆元素還克隆元素內(nèi)容所有子孫元素, 可以傳入?yún)?shù)true!!! 案例1:
/* --通過(guò)ID獲取并彈出用戶(hù)名輸入框的值-- */function demo1(){//根據(jù)ID獲取用戶(hù)名輸入框,un即代表整個(gè)輸入框var un = document.getElementById("username");alert(un.value);//可以自己設(shè)置value值un.value = "蘭姐";}/* --通過(guò)name屬性獲取并彈出密碼輸入框的值-- */function demo2(){//根據(jù)name屬性獲取密碼輸入框,因?yàn)閚ame屬性可以重復(fù),所以獲取的是一個(gè)集合數(shù)組var pwarr = document.getElementsByName("password");//在數(shù)組中獲取第一個(gè)元素var pw = pwarr[0];alert(pw.value);}/* --通過(guò)元素名稱(chēng)獲取并彈出確認(rèn)密碼輸入框的值-- */function demo3(){//根據(jù)標(biāo)簽名獲取確認(rèn)密碼輸入框,同樣,獲取的是一個(gè)數(shù)組var inparr = document.getElementsByTagName("input");//獲取第三個(gè)元素var pw2 = inparr[2];alert(pw2.value);} /* --獲取元素內(nèi)容-- */function demo4(){var oP = document.getElementById("pid");//獲取p標(biāo)簽中的文本內(nèi)容 innerText(部分瀏覽器不支持)alert(oP.innerText);//獲取p標(biāo)簽中的所有html內(nèi)容 innerHTML(絕大部分瀏覽器都支持)alert(oP.innerHTML);//設(shè)置p標(biāo)簽中的html內(nèi)容oP.innerHTML = "<font color='blue'>我要變身了...!</font>";}
案例2:
/* --添加節(jié)點(diǎn): 添加一個(gè)div元素到body的最后面-- */function addNode(){//獲取父元素 //var oBody = document.getElementsByTagName("body")[0];//body是document的子對(duì)象,所以可以直接獲取var oBody = document.body;//創(chuàng)建一個(gè)游離div元素var oNewDiv = document.createElement("div");//給div中添加內(nèi)容oNewDiv.innerHTML = "我是新來(lái)的....!";//將div元素掛載到父元素上oBody.appendChild(oNewDiv);}/* --刪除節(jié)點(diǎn): 刪除body中id值為 div_3 的div元素-- */function deleteNode(){//獲取父元素bodyvar oBody = document.body;//獲取要?jiǎng)h除的元素div_3var oDiv_3 = document.getElementById("div_3");//解除父子關(guān)系oBody.removeChild(oDiv_3);}/* --更新節(jié)點(diǎn): 用新節(jié)點(diǎn)替換id值為 div_2 的div元素 -- */function updateNode(){//創(chuàng)建一個(gè)新節(jié)點(diǎn)var oNewDiv = document.createElement("div");oNewDiv.innerHTML = "我是來(lái)替換的~!";//獲取被替換的元素var oDiv_2 = document.getElementById("div_2");//獲取父元素, 并通過(guò)父元素替換子元素var oBody = oDiv_2.parentNode;oBody.replaceChild(oNewDiv, oDiv_2);}/* --克隆節(jié)點(diǎn)、插入節(jié)點(diǎn)到指定元素的前面--*/function copyNode(){//獲取指定元素var oDiv_4 = document.getElementById("div_4");//克隆元素var oCloneDiv = oDiv_4.cloneNode(true);//false 默認(rèn)值, 只克隆元素本身, 不克隆元素內(nèi)容//獲取父元素bodyvar oBody = document.body;var oDiv_2 = document.getElementById("div_2");//將克隆元素插入到指定位置oBody.insertBefore(oCloneDiv,oDiv_2);}
總結(jié)
以上是生活随笔 為你收集整理的大数据WEB阶段(四)JavaScript 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。