1. JavaScript的概述 1.1 什麼是JavaScript JavaScript是web上一種功能強大的編程語言,用於開發互動式的web頁面。它不需要進行編譯,而是直接嵌入在HTML頁面中,由瀏覽器執行。 JavaScript被設計用來向HTML頁面添加交互行為。 JavaScript是一 ...
1. JavaScript的概述
1.1 什麼是JavaScript
JavaScript是web上一種功能強大的編程語言,用於開發互動式的web頁面。它不需要進行編譯,而是直接嵌入在HTML頁面中,由瀏覽器執行。
JavaScript被設計用來向HTML頁面添加交互行為。
JavaScript是一種腳本語言(腳本語言是一種輕量級的編程語言)。
JavaScript由數行可執行電腦代碼組成。
JavaScript通常被直接嵌入HTML頁面。
JavaScript是一種解釋性語言(就是說,代碼執行不進行預編譯)。
JavaScript的組成:
核心(ECMAScript)
文檔對象模型(DOM)
瀏覽器對象模型(BOM)
ECMAScript:語法,語句.
BOM:瀏覽器對象.
DOM:Document Object Model.操作文檔中的元素和內容.
1.2 JavaScript的作用
使用JavaScript添加頁面動畫效果,提供用戶操作體驗。主要應用有:嵌入動態文本於HTML頁面、對瀏覽器事件作出相應、讀寫HTML元素、驗證提交數據、檢測訪客的瀏覽器信息等。
1.3 JavaScript的引入
在HTML文件中引入JavaScript有兩種方式,一種是在HTML文檔直接嵌入JavaScript腳本,稱為內嵌式,另一種是連接外部JavaScript腳本文件,稱為外鏈式。對他們的具體講解如下:
(1)內嵌式,在HTML文檔中,通過<script>標簽引入,如下
<script type="text/javascript"> //此處為JavaScript代碼 </script>
(2)外聯式,在HTML文檔中,通過<script src="">標簽引入.js文件,如下:
<script src="1.js" type="text/javascript" charset="UTF-8"></script>
2. 基本語法
2.1 變數
(1)在使用JavaScript時,需要遵循以下命名規範:
必須以字母或下劃線開頭,中間可以是數字、字元或下劃線
變數名不能包含空格等符號
不能使用JavaScript關鍵字作為變數名,如:function
JavaScript嚴格區分大小寫。
(2)變數的聲明
var 變數名; /JavaScript變數可以不聲明,直接使用,預設值:undefined
(3)變數的賦值
var 變數名 = 值; //JavaScript變數是弱類型,及同一個變數可以存放不同類型的數據
2.2 數據類型
【基本類型】
Undefined,Undefined類型只有一個值,即undefined。當聲明的變數未初始化時,該變數的預設值是undefined。
Null,只有一個專用值null,表示空,一個占位符。值undefined實際上是從值null派生來的,因此ECMAScript把它們定義為相等的。
alert(null == undefined); //輸出 "true",儘管這兩個值相等,但它們的含義不同。
Boolean,有兩個值true和false
Number,表示任意數字
String,字元串由雙引號(")或單引號(')聲明的。JavaScript沒有字元類型
對變數或值調用typeof運算符將返回下列值之一:
undefined-如果變數是Undefined類型的
boolean-如果變數是Boolean類型的
number-如果變數是Number類型的
string-如果變數是String類型的
object-如果變數是一種引用類型或Null類型的
【引用類型】
引用類型通常叫做類(class),也就是說,遇到引用值,所處理的就是對象。
JavaScript是基於對象而不是面向對象。對象類型的預設值是null。
JavaScript提供眾多預定義引用類型(內置對象)。
2.3 運算符
JavaScript運算符與java運算符基本一致。可以看我的java基礎隨筆
2.4 基本操作
alert():向頁面中彈出一個提示框!!
innerHTML:向頁面的某個元素中寫一段內容,將原有的東西覆蓋
document.write():向頁面中寫內容
2.5 js中函數的編寫方式:
函數:實現一定功能的代碼塊,類似與java中的方法。關鍵字function,函數名自定義。
<script type="text/javascript"> //方式1:聲明函數 function demo01(){ alert("案例1"); } //方式1:調用函數 demo01(); //方式2:聲明匿名函數 var demo02 = function(){ alert("案例2"); }; //方式2:調用函數 demo02(); </script>
3. 案例:輪播圖
3.1 定時器setInterval
window.setInterval(code,millisec) 按照指定的周期(間隔)來執行函數或代碼片段。 參數1:code必須。執行的函數名或執行的代碼字元串。 參數2:millisec必須。時間間隔,單位:毫秒。 返回值:一個可以傳遞給window.clearinIerval()從而取消對code的周期性執行的值。 例如: 方式1:函數名, setInterval(show , 100); 方式2:函數字元串, setInterval(""show() , 100);
window對象提供都是全局函數,調用函數時window可以省略。
window.setInterval()等效setInterval()
3.2 案例實現
步驟1:為輪播圖img標簽添加id屬性
<div style="width: 100%;"> <img id="imgId" src="img/1.jpg" width="100%"/> </div>
步驟2:編寫js代碼,頁面載入觸髮指定函數
<script type="text/javascript"> //載入成功啟動監聽器,5秒執行一次 window.onload = function(){ setInterval(changeImage , 2000) } //在3張照片之間切換 var num = 1; function changeImage(){ if(num >= 3){ num = 1; } var imageobj = document.getElementById("imgId"); imageobj.src = "img/"+ num++ +".jpg" } </script>
4. 案例:定時彈廣告
4.1 定時器:setTimeout
setTimeout()在指定的毫秒數後調用函數或執行代碼片段。
setTimeout(code,millisec)
code 必需。要調用的函數或要執行的代碼字元串。
millisec 必需。在執行代碼前需等待的毫秒數。
setInterval() 以指定周期執行函數或代碼片段。
clearInterval() 取消由setInterval()設置的timeout。
clearTimeout() 取消由setTimeout()方法設置的timeout。
4.2 JavaScript樣式獲得或修改
獲得或設置樣式
obj.style.屬性 獲得指定"屬性"的值。 obj.style.屬性=值 給指定的"屬性"設置內容。 如果屬性由多個單詞使用"-"連接,需要將"-"刪除,並將後一個單詞首字母大寫。 例如:background-color 需要改成 backgroundColor
實例:
<div id="divId" style="height: 100px;width: 100px;margin: 10px;padding: 20px;background-color: red;">小灰灰</div> <script type="text/javascript"> //1 獲得div對象 var divObj = document.getElementById("divId"); //2 獲得高度 // divObj.style.height 數據為"100px" // 使用parseInt() , 將字元串"100px"轉換成數字"100" var height = window.parseInt(divObj.style.height); //3 將原始高度翻倍,再設置給div。 divObj.style.height = height * 2 + "px"; </script>
4.3 案例實現
步驟1:在頁面中,添加廣告位div,並設置頁面載入事件
<body onload="init()"> <!-- 整體的DIV --> <div> <!-- 定時彈出廣告的div --> <div id="divAd" style="width: 99%;display: none;"> <img src="img/1.jpg" width="100%"/> </div> </div> </body>
步驟2:編程JS實現
<!-- 在html頁面中引入js文件 --> <script src="js/ad.js"> </script>
ad.js代碼
var time; function init(){ //設置定時操作 time = setInterval("showAd()",5000); } function showAd(){ //獲得div元素 var divAd = document.getElementById("divAd"); divAd.style.display = "block"; //清除之前的定時操作 clearInterval(time); //重新設置一個定時:5秒鐘隱藏 time = setInterval("hideAd()",5000); } function hideAd(){ //獲得div元素 var divAd = document.getElementById("divAd"); divAd.style.display = "none"; clearInterval(time); }
5. BOM(Browse Object Mode)
5.1 Browse 對象
DOM Window
DOM Navigator
DOM Screen
DOM History
DOM Location
5.2 BOM:Window對象
方法:定時器
setInterval():按照指定的周期(以毫秒計)來調用函數或計算表達式。
clearInterval():取消由setInterval() 設置的timeout。
setTimeout():在指定的毫秒數後調用函數或計算表達式。
clearTimeout():取消由setTimeout() 方法設置的timeou。
方法:消息框
alert():顯示帶有一段消息和一個確認按鈕的警告框。
confirm():顯示帶有一段消息以及確認按鈕和取消按鈕的確認框。
prompt():xian's可提示用戶輸入的提示框。
Window尺寸
1) IE9 (含,及以上),Chrome、 Firefox 等其他瀏覽器獲得方式
windowinnerHeight -瀏覽器視窗的內部高度
windowinnerWidth-瀏覽器視窗的內部寬度
2) Internet Explorer8、7、6、5
document.documentElement.clientHeight
document.documentElement.clientWidth
或者
document.body.clientHeight
document. body.clientW idth
相容所有瀏覽器的JS實現方案:
var w=window.innerWidth || document.documentElement.clientWidth
|| document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight
|| document.body.clientHeight;
5.3 BOM:Location對象
href屬性:設置或返回完整的URL。
hash:設置或返回從井號(#) 開始的URL (錨)。
host:設置或返回主機名和當前URL 的埠號。
hostname:設置或返回當前URL 的主機名。
href:設置或返回完整的URL。
pathname:設置或返回當前URL的路徑部分。
port:設置或返回當前URL 的埠號。
protocol:設置或返回當前URL的協議。
search:設置或返回從問號(?) 開始的URL (查詢部分)。
<script type="text/javascript"> function change () f location.href = "http: / /www. ithe ima. com" ; ) </script> <input type="button"' value="5ft"onclick="change()"/>
5.4 BOM:History對象
go()方法:跳轉到指定頁面
go(-1):載入前一個鏈接,等效back()
go(1):載入後一個鏈接,等效forward()
back():載入history 列表中的前一個URL。
forward():載入history 列表中的下一個URL。
go():載入history 列表中的某個具體頁面。
6. JS操作HTML、事件
6.1 標簽體內容:innerHTML
innerHTML-HTML元素的內部文本
獲得:document.getElementById("divId").innerHTML
設置:document.getElementById("divId").innerHTML = "...."
6.2 獲得指定的id的值
提供函數val(objId)獲得指定id屬性對應元素value的值
/** * 獲得二指定元素value屬性的值 * 例如:var loginName = val("loginnameId"); */ function val (objId) f return document.getElementById(objId).value; )
6.3 錯誤提示
當標簽沒有驗證通過時,給出提示信息。如果校驗通過隱藏錯誤提示信息
/** * 2.1 顯示錯誤提示信息 * 例如:showTip("loginnameIdMsg","用戶名不能為空"); */ function showTip(errObjId, text ) { //獲得錯誤提示對象,並設置和顯示 var showObj = document.getElementById(errObjId) ; showObj.innerHTML = text; showObj.style.display = "block" ; } /** * 2.2 顯示錯誤提示信息 */ function hideTip() ( var showObj = document . getEl ementById (errObjId) ; showObj.innerHTML = ""; showObj.style.display = "none"; }
6.4 獲得焦點
/** * 3 獲得焦點 */ function focus (objId) { //指定標簽獲得焦點 document。getElementById(objId).focus(); }
6.5 事件總結
常見事件:
onload:某個頁面或圖像被完成載入
onsubmit:提交按鈕被點擊
onclick:滑鼠點擊某個對象
ondblclick:滑鼠雙擊某個對象
onblur:元素失去焦點
onfocus:元素獲得焦點
onchange:用戶改變域的內容
onkeydown:某個鍵盤的鍵被按下
onkeypress:某個鍵盤的鍵被按下或按住
onkeyup:某個鍵盤的鍵被鬆開
onmousedown:某個滑鼠按鍵被按下
onmouseup:某個滑鼠按鍵被鬆開
onmouseover:滑鼠被移到某元素之上
onmouseout:滑鼠從某元素移開
onmousemove:滑鼠被移動
event屬性:
clientX:返回當事件被觸發時,滑鼠指針的水平坐標。
clientY:返回當事件被觸發時,滑鼠指針的垂直坐標。
keyCode:返回當事件被觸發時,鍵盤輸入ASCII碼。
event方法:
preventDefault():阻止瀏覽器預設行為
stopPropagation():阻止事件的傳播
阻止瀏覽器預設行為
<a href="http://www.baidu.com" onclick="one() ">百度</a><br/> <a href="http://www.taobao.com" onclick=" return two() ">淘寶</a><br/> <script type="text/javascript"> function one () { alert("我之後,百度官網継銕彷向") ; } function two (event) { alert("我之後,淘寶不再坊向") ; //方式1: //return false; //方式2: var event = event || window. event ; event.preventDefault () ; } </ script>
阻止事件的傳播
<!-- 區域1 --> <div id="e1" style-"width:200px ; height: 200px; background-color: #f00;"> <div id="e2" style= "width: 100px ; height: 100px; background-color: #0f0;"></div> </div> <hr /> <!-- 區域2 --> <div id="e3" style="width:200px ; height: 200px; background-color: #f00;"> <div id="e4" style="width: 100px ; height: 100px; background-color: #0f0;"></div> </div> <script type-"text/javascript"> var el = document.getElementById("e1"); var e2 = document.getElementById("e2"); var e3 = document.getElementById("e3"); var e4 = document.getElementById("e4") ; //設置“區域1”事件 el,onclick.function() { alert("e1") ; } e2,onclick.function() { alert("e2, 同時el也觸發"); } //設置“區域2”事件 e3.onclick = function() { alert ("e3"); } e4.onclick = function (event) { alert("e4, e3不觸發"); var event = event || window.event; event.stopPropagation(); } </script>