起源
javascript前身叫做livescript,sun公司推出java,netspace公司引進java的概念,重新設計livescript,並更名javascript。發明者,布蘭登.艾克,表單驗證原先要經過伺服器,伺服器壓力大,等待時間長,js僅在客戶端就可完成。
是什麼
是一種腳本語言,是一種輕量級的程式語言。JavaScript可插入 HTML 頁面的編程代碼,由所有的瀏覽器執行,從服務端被下載到客戶端由瀏覽器執行。
作用
1、表單驗證
2、頁面特效
3、動態調整頁面
組成
1、核心語法(ECMAScript)
2、瀏覽器對象模型(BOM)
1) 是什麼
Browser Object Model,瀏覽器對象模型:由一系列對象組成,是訪問、控制、修改瀏覽器屬性的方法.
2) 結構圖
3) 內容簡介
window
BOM使javascript有能力與瀏覽器進行溝通,這個溝通從window對象開始,所有的window對象的屬性和方法自動成為javascript的全局變量和全局函數。可直接使用。
history
包含用戶訪問過的URL,最初設計表示瀏覽歷史,出於隱私,不允許js訪問已經訪問過的實際URL。仍保持back(),forwore(),go()等方法。
location
包含當前頁面的URL信息,可重載當前頁面或裝入新頁面
document
一個比較特殊的對象,它既是瀏覽器對象模型BOM中的一個對象,同時表示文檔對象模型DOM中整個HTML文檔。
3、文檔對象模型(DOM)
1)是什麼
文檔對象模型:由一系列對象組成,是訪問、控制、修改HTML文檔的標準方法。通過可編程的對象模型,JavaScript 獲得了足夠的能力來創建動態的 HTML。BOM是一個與語言無關,與平臺無關的標準接口規範。將HTML 文檔解析成樹結構。
2)結構圖
3)內容簡介
節點:
在DOM (文檔對象模型)中,每個部分都是節點:
文檔節點:文檔本身
元素節點:所有 HTML 元素
屬性節點:所有 HTML 屬性
文本節點:HTML 元素內的文本
注釋節點:注釋
element.appendChild() 向元素添加新的子節點,作為最後一個子節點。
element.removeChild() 從元素中移除子節點。
element.replaceChild() 替換元素中的子節點。
element.insertBefore() 在指定的已有的子節點之前插入新節點。
getElementById() 返回對擁有指定 id 的第一個對象的引用。
getElementsByName() 返回帶有指定名稱的對象集合。
getElementsByTagName() 返回帶有指定標籤名的對象集合。
創建方式
1、外部js文件
將JS代碼寫入後綴名為.JS的外部文件中,只寫腳本代碼,不用寫<SCRIPT>標籤。html頁面引入。
js文件內容:
alert("哈哈!「);
HTML引入內容:
<script src="JS外部文件。js"> <!--js腳本代碼> </script>
適用於:代碼量較大。或者再多個頁面中共享
2、<script>標籤
<script>
function demo(a){
alert(a)
}
</script>
<button onclick="demo('點我幹嘛!')">點我</button>
適用於:代碼較少,較少重複使用
3、HTML標籤內
<input type="button" value="js" onclick="javascript:alert('我是JS腳本代碼')"/>
<input type="button" value="js" onclick="alert('我是JS腳本代碼')"/>
適用於:特別簡短的JS 代碼
數據類型
數值number
整數或小數
實例
var x1=34.00; //使用小數點來寫
var x2=34; //不使用小數點來寫
數組array
實例
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
var cars=new Array("Saab","Volvo","BMW");
var cars=["Saab","Volvo","BMW"];
布爾
true 或 false
實例
var x=true;
var y=false;
字符串string
字符串是存儲字符(比如 "Bill Gates")的變量。
字符串可以是引號中的任意文本。您可以使用單引號或雙引號:
實例
var carname="Volvo XC60";
var carname='Volvo XC60';
對象object
對象由花括號分隔。
在括號內部,對象的屬性以名稱和值對的形式 (name : value) 來定義。
屬性由逗號分隔:
實例
var person={firstname:"John", lastname:"Doe", id:5566};
對象屬性有兩種尋址方式:
name=person.lastname;
name=person["lastname"];
undefined
保留字,已申明變量,沒有賦值。
null
定義空或不存在的引用。
不等與 空字符串 或 0
undefined:這個值表示變量不含有值。可以通過將變量的值設置為 null 來清空變量。判斷數據類型(typeof)var height=180;
document.write("height的類型為:"+typeof(height));
函數
作用
使程序結構清晰,封裝多條語句,代碼復用,便於維護。
結構
關鍵字聲明function,參數,函數體。
注意
函數定義時不必指定返回值。任何函數任何時候可通過return語句實現返回值。除return語句外,無任何聲明也能表示返回值。函數執行完return立即退出,return之後的語句永遠不會執行。一個函數可以多個return。return可以不帶返回值,會返回undefined。//1.函數定義時不必指定返回值。
functiona(num1,num2){
alert(num1+num2);
}
a(1,2);
//2.任何函數任何時候可通過return語句實現返回值。
functionb(num1,num2){
returnnum1+num2;
}
alert (b(1,3));
//3.除return語句外,無任何聲明也能表示返回值
functionc(num1,num2){
returnnum1+num2;
}
varresult=c(1,4);
alert(result);
//4.函數執行完return立即退出,return之後的語句永遠不會執行
functiond(num1,num2){
returnnum1+num2;
//return後面的語句永遠不會執行
alert(num1+num2);
}
alert(d(1,5));
//5.一個 函數可以多個return
functione(num1,num2){
if(num1>num2){
returnnum1-num2;
}
else{
returnnum2-num1;
}
}
alert(e(1,2));
alert(e(3,1));
//6.return可以不帶返回值,會返回undefined
functionf(num1,num2){
return;
}
alert(f(1,6));
輸出
1、針對用戶的
alert()
<button onclick="alert('我是alert方式的彈框!')">alert</button>
confirm()
<button onclick="confirm('我是confirm方式的彈框!')">confirm</button>
prompt()
兩個參數,一個提示信息,一個默認值。
<button onclick="prompt('我是prompt方式的彈框1',6)">confirm</button>
2、針對HTML文檔元素
.innerHTML
雙向功能:獲取對象的內容 或 向對象插入內容;
<script>
//獲取對象的內容
function gets(){
alert(document.getElementById("innerHtml").innerHTML);
}
//向對象插入內容
function puts() {
document.getElementById("innerHtml").innerHTML = "i am not here";
}
</script>
<body>
<p id="innerHtml">i am here</p>
<button onclick="gets()">innerHtmlGets</button>
<button onclick="puts()">innerHtmlPuts</button>
</body>
.write
<script>
function myFunction() {
document.write(Date());
}
</script>
<button onclick="document.write(Date());">document.write</button>
該方法僅僅向文檔輸出寫內容,如果在文檔已完成加載後執行 document.write,整個 HTML 頁面將被覆蓋。
3、控制臺
console.log()
瀏覽器支持調試,可以在瀏覽器中顯示 JavaScript 值。瀏覽器中使用 F12 來啟用調試模式,在調試窗口中點擊 "Console" 菜單。
c = 5+6;
console.log(c);
注釋
//我不會執行
/* 我不會執行 */