WEB-4-JavaScript(JS)

JavaScript

1.JavaScript概述

1.1.JavaScript是幹什麼的?

1. HTML 定義了網頁的內容

2. CSS 描述了網頁的佈局

3. JavaScript 指定了網頁的行爲

 

1.2.Js歷史

19955月,網景公司,叫Brendan Eich的哥們,10天,LiveScript

199512月,改名爲JavaScript

19968月,微軟,Jscript

1997-1999年,ECMA國際組織,ECMAScript,基於已有的JavaScriptJscript,提出了標準的Script語法規則,JavaScriptJscript都遵循這套標準。

1999-以後,ECMAScript不斷的更新

 

java的關係?

不好意思,只是蹭了下你的熱度,我們其實沒關係

 

1.3.js特點

JavaScript 是腳本語言,不需要編譯,是解釋運行的語言。

JavaScript 是可插入 HTML 頁面的編程代碼,可由所有的現代瀏覽器執行。

JavaScript 是基於對象,弱類型的語言。

JavaScript 很容易學習。

 

1.4.js優點:

交互性:可以與用戶進行動態交互。

安全性:只能在瀏覽器內運行,不能訪問本地硬盤或其他資源。

跨平臺:有瀏覽器即可運行,與操作環境無關。

 

2.html中引入js代碼(案例一)

2.1.直接在html中書寫js代碼

html中可以在script標籤內部直接書寫js代碼,通常寫在head中!

 

2.2.引入外部的js文件

如果js代碼特別多的情況下, 可以將js代碼抽取到一個獨立的文件中, html中通過script標籤引入該js文件.

注意: script標籤如果是用來引入外部的js文件, 標籤內部不要再書寫js代碼, 並且標籤不要自閉, 否則可能會導致引入失敗!!!

案例一:在html中引入js

<!-- 第一種方式 -->

<script type="text/javascript">

function fn1() {

alert("引入js的第一種方式")

}

</script>

<!-- 第二種方式(先創建demo.js文件,裏面直接寫js代碼) -->

<script type="text/javascript" src="demo.js"></script>

 

3.JavaScript語法

3.1.註釋

單行註釋:   // 註釋內容

多行註釋:   /* 註釋內容 */

 

3.2.數據類型

3.2.1基本數據類型

Ø 數值類型(number)

Ø 字符串類型(string)

Ø 布爾類型(boolean)

Ø undefined類型

Ø null類型

 

1)數值類型

js, 所有的數值底層都是浮點型¸ 在需要時, 整型和浮點型會自動的進行類型的轉換.

例如:2.4+3.6=6

 

特殊值:

Infinity 正無窮大

-Infinity 負無窮大

NaN (not a number) 非數字 :NaN和任何數值都不相等, 包括它本身. 如果要判斷一個值是否是非數字, 不能用 NaN == xx 來判斷, 而是應該使用 isNaN(xx) 進行判斷。

 

js, number類型提供了對應的包裝對象 – Number

 

2)字符串類型

js, 字符串類型是基本數據類型的一種, 字符串常量, 可以用單引號或者雙引號引起來!

例如:var s1 = “aaa”; var s2 = ‘bbb’;

 

js, string類型提供了對應的包裝對象 – String

 

 

3)布爾類型

boolean, 值爲truefalse

 

js, boolean類型提供了對應的包裝對象 – Boolean

 

4undefined

undefined類型的值只有一個, 就是undefined. 表示變量未定義。如果聲明瞭一個變量, 但是沒有初始化值, 該變量的值就是undefined

例如:var a; a的值即爲undefined

 

5null

null類型的值也只有一個, 就是null, 表示此處的值現在爲空。常用來作爲函數的返回值, 表示該返回值是一個沒有任何內容的空對象

 

3.2.2.複雜數據類型

複雜數據類型: 對象(普通對象 數組 函數)(後面詳講)

 

3.2.3.js中的數據類型的轉換(案例二)

js中的數據類型在需要時會自動的進行類型轉換, 轉換時遵循如下規則:

數值類型:

轉字符串類型, 直接轉成對應值的字符串, 3 --> "3"

轉布爾類型, 0NaN轉成false, 其他數值轉成true

在需要時, 會自動轉成對應的包裝對象 100 --> new Number(100)

 

字符串:

空字符串(""): 轉數值爲0, 轉布爾值爲false

非空純數值字符串("123"): 轉數值爲對應的數值, 轉布爾值爲true

非空非數值字符串("abc"): 轉數值爲NaN, 轉布爾值爲true

在需要時, 會自動轉成對應的包裝對象. "aaa" --> new String("aaa")

布爾類型:

true: 轉數值爲 1, 轉字符串爲"true"

false: 轉數值爲 0, 轉字符串爲"false"

在需要時, 會自動轉成對應的包裝對象.

 

undefined

轉數值爲NaN, 轉字符串爲"undefined", 轉布爾值爲false, 轉對象會拋出異常!

 

null

轉數值爲 0, 轉字符串爲"null", 轉布爾值爲false, 轉對象會拋出異常!

 

案例二:數據類型轉換

<!-- 數據類型轉換 -->

<script type="text/javascript">

//1.數值類型

//1.1.彈出數字6與字符串"66"的和

alert(6+"66");

//1.2.對數字進行判斷,若爲0NaN,則彈出"世界如此美好!" 若爲其他數字,則彈出"我卻如此暴躁!"

if(3){

alert("我卻如此暴躁!");

}else{

alert("世界如此美好!");

}

//2.字符串

//2.1.彈出字符串"1000"與數字334的差

alert("1000"-334);

//2.2.字符串判斷,若爲空字符串(""),彈出"師傅,大師兄說的對!",若爲非空字符串,彈出"大師兄,師傅被妖怪抓走了!"

if("123"){

alert("大師兄,師傅被妖怪抓走了!");

}else{

alert("師傅,大師兄說的對!");

}

 

//3.布爾類型

/* 已知:var a = [3>2>1, 1<2<3] a[0]a[1]的值分別是什麼?*/

var a = [3>2>1, 1<2<3];

alert(a[0]);  //false

alert(a[1]);  //true

</script>

 

3.3.變量的定義

js中有數據類型, 但是變量不區分類型, 所以稱js是一門弱類型的語言。

js中通過var關鍵字聲明變量, 變量不區分類型, 可以指向任意類型的值!

例如:var s1 = “aaa”; var i = 100;

 

3.4.運算符(案例三)

JS中的運算符和Java中的運算符大致相同

JS中與java運算符不同之處:

比較運算符除了==”,還有“===

== 在進行比較時, 如果兩端的值不是同一種數據類型, 先自動轉成同一種數據類型, 再進行比較, 如果轉換之後再比較, 相等則返回true, 不相等則返回false;

=== 爲嚴格相等,在進行比較時, 如果兩端的值不是同一種數據類型, 直接返回false; 如果是同一種類型再次比較值是否相等, 是則返回true, 不是則返回false

 

typeof: 用來返回變量/常量/表達式的數據類型

格式:var x = 123;   typeof x

 

delete: 用來刪除數組中的元素或者刪除對象中的屬性或方法。。。

格式:var arr = [123,”abc”,true];   delete arr[1];

案例三:運算符

<!-- 運算符演示 -->

<script type="text/javascript">

//1.分別用"==""==="判斷數字666和字符串"666"是否相等

alert(666=="666");    //true

alert(666==="666");   //false

//2.分別對x進行不同的賦值,利用typeof查看x的數據類型

var x = "1";

alert(typeof x);

//3.問題:判斷typeof 6+"66" 的值是什麼?

alert(typeof 6+"66");//number66

//4.刪除下面數組中的第二個元素

var arr = [111,"abc",true];

delete arr[1];

alert(arr);

alert(arr[1]);

</script>

 

 

3.5.語句

JS中的語句和Java中的語句也大致相同

 

if條件語句

如果判斷條件不是布爾類型, 會自動轉換成布爾值!

 

switch語句

語法和Java中大致相同, 並且也支持字符串類型

 

循環語句

while(){}   do{}while()   for(){} 語法和Java中的很相似, 但是js中不支持增強for循環

 

3.6.函數(案例四)

3.6.1.通過function關鍵字來定義一個函數

function 函數名(形參列表){

函數體

}

 

調用函數: 函數名(實參列表)

 

3.6.2.通過函數表達式來定義一個函數

var fn = function (形參列表){

函數體

}

 

調用函數: 函數名(實參列表)

 

案例四:函數

<!-- 函數演示 -->

<script type="text/javascript">

//1.分別用兩種方式定義一個方法,將姓名與年齡作爲參數傳入,調用方法時彈出姓名與年齡

//方式一

function fn1(name,age){

alert(name+":"+age);

}

fn1("蘭姐",18);

//方式二

var fn2 = function(name,age){

alert(name+":"+age);

}

fn2("剛哥",19);

</script>

 

3.7.數組

3.7.1.通過Array()構造函數來創建數組

 

var arr1 = new Array();  //創建一個空數組

var arr2 = new Array(10);  //創建一個長度爲10的空數組

var arr3 = new Array(“aa”, 55, true);  //創建一個具有指定初始值的數組

 

3.7.2.通過數組直接量來創建數組

 

var arr4 = [];    //創建一個空數組

var arr5 = [“x”, 100, false];    //創建一個具有指定初始值的數組

 

數組中的細節問題:

>> 數組的長度可以被任意改變

var arr =[“aa”, “bb”, “cc”];   arr.length=1;    //[“aa”]

 

>> 如果數組中某一個位置沒有元素, 該位置的值爲undefined

var arr =[“aa”, “bb”, “cc”];   arr[10];    //undefined

 

>> JS中的數組可以存放任意類型的數據

var arr = [“x”, 100, false];

 

3.8.js中的內置對象(案例五)

3.8.1.String對象

創建:

var str1 = new String(“xxx”);    //創建字符串對象

var str2 =“xxx”; //創建字符串基本類型,但是也可以

 

常用屬性和方法:

str.length           返回字符串長度。

str.charAt(index)     返回指定索引位置處的字符。

例如:var str = "abcdeabc";    x.charAt(3)  // 3

 

str.indexOf(subString, startIndex)   返回第一次出現子字符串的位置。

例如:var str = "abcdeabc";    x.indexOf("bc",2)  // 6,從第3個開始數

 

str.lastIndexOf(substring, startindex)  返回最後出現子字符串的位置。

例如:var str = "abcdeabc";  x.lastIndexOf("bc",8);  // 6,從後往前數

 

str.split(delimiter)  將字符串按照指定字符分割爲字符串數組。

例如:var str = "a:b:c:d";  str.split(":")  //返回爲一個數組[a,b,c,d]

 

str.slice(start, end)  提取字符串的某個部分,含頭不含尾。

例如:var str = "abcdeabc";  str.slice(2,4);  // cd

 

str.substr(start, length)  返回從指定位置開始的指定長度的子字符串。

例如:var str = "abcdeabc";   str.substr(2,4);  //cdea

 

str.toLowerCase( )    字符串中的字母轉換爲小寫。

例如:var str = "ABCDE";    str.toLowerCase();  //abcde

 

str.toUpperCase( )    字符串中的字母轉化爲大寫。

例如:var str = "abcde";   str.toUpperCase();  //ABCDE

 

str.match(regexp)     在字符串中查找指定匹配正則表達式的值。

str.replace(regexp, replaceText)  字符串中匹配正則的值替換爲其他值。

str.search(regexp)    查找與正則表達式匹配的第一個子字符串的位置。

 

3.8.2.RegExp 對象(正則表達式)

創建:

var reg1 = new RegExp("", "");  

var reg2 = /xxx/;

 

標識符: g à Global 全局查找 i à IgnoreCase 忽略大小寫

如果正則需要從頭到尾都匹配,需要以”^”開頭,以”$”結尾。

 

reg.test(str); 檢查字符串是否符合該正則, 如果符合返回true, 不符合返回false!!!

 

3.8.3.Array對象

創建:

var arr1 = new Array();

var arr2 = [];

 

常用屬性和方法:

arr.length  返回數組中元素的個數

例如:var arr = ["a","b","c"];   arr.length;  // 3

 

arr.concat(arr1,arr2,arr3...) 將多個數組合併成一個

例如:

var arr1 = ["a","b","c"];   var arr2 = ["d","e","f"];   var arr3 = ["x","y","z"];  

arr1.concat(arr2,arr3);   // ["a","b","c","d","e","f","x","y","z"]

 

arr.join(string)  將數組中所有元素按照指定字符串連接成一個字符串

例如:var arr = ["aaa",123,true];   arr.join("-");   // aaa-123-true

 

arr.reverse( )  返回一個元素順序被反轉的 Array 對象。

例如:var arr = ["a","b","c"];   arr.reverse();  //["c","b","a"]

 

arr.slice(start, end)    返回一個數組的一段,含頭不含尾。

例如:var arr = ["a","b","c",1,2,3];   arr.slice(2,4);  // ["c",1]

 

arr.splice(start, deleteCount,value...)

    從一個數組中移除一個或多個元素,如果必要,在所移除元素的位置上插入新元素,返回所移除的元素。

例如:var arr = ["a","b","c","d","e","f"];  arr.splice(2,2,"zzz");

// 返回值爲["c","d"]arr則變爲["a","b","zzz","e","f"],中間被替換

 

arr.pop( )  移除數組中的最後一個元素並返回該元素

例如:var arr = ["aaa",123,"x",true,8];    arr.pop();

//返回值爲 8arr則變爲["aaa",123,"x",true]

 

arr.push(value) 在數組的末尾加上一個或多個元素,並返回新數組的長度值

例如:var arr = ["aaa",123,"x",true,8];    arr.push("last")

//返回值爲6arr則變爲 ["aaa",123,"x",true,8,"last"]

 

arr.shift( )  移除數組中的第一個元素並返回該元素

例如:var arr = ["aaa",123,"x",true,8];    arr.shift()

//返回值爲 "aaa" arr則變爲[123,"x",true,8]

 

arr.unshift(value) 爲數組的開始部分加上一個或多個元素,並且返回該數組的新長度

例如:var arr = ["aaa",123,"x",true,8];    arr.unshift("first")

//返回值爲6arr則變爲["first","aaa",123,"x",true,8]

 

arr.sort(sortfunction)  返回排序後的數組。

 

3.8.4.date對象

創建:

var date1 = new Date();    // 當前時間

var date2 = new Date(,,[,,,]);  //指定時間,可以只有年月日

注意:當創建指定時間的時候,月是從0開始,例如:

var date2 = new Date(2008,7,8,20,0,0);  

這個時間是200888日晚上8點整

 

常用方法:

data.toLocaleString() 把日期(一個數值)轉變成本地日期格式字符串

例如:var date2 = new Date(2008,7,8);  date2.toLocaleString();

// "2008/8/8 上午12:00:00"  

 

data.getFullYear()   獲取日期對象中所表示時間的年份

例如: var date = new Date(2008,7,8);  date.getFullYear();   // 2008

 

data.getMonth()   獲取日期對象中所表示時間的月份,返回一個 0 11 之間的整數,0表示一月。

例如:var date = new Date(2008,7,8);   date.getMonth();  // 7

 

data.getDate()   獲取日期對象中所表示一個月的日期值,返回值是一個處於 1 31 之間的整數,代表了相應的日期值。

例如:var date = new Date(2008,7,8);  date.getDate();  // 8

 

data.getDay()   獲取日期對象中所表示一個周的日期值。 返回的值是一個處於 0 6 之間的整數,0表示週日,6表示週六。

例如:var date = new Date(2008,7,8);   date.getDay();  // 5,表示週五

 

data.getTime()   返回從 1970 1 1 日至指定時間的毫秒數。

例如:var date = new Date(2008,7,8);  date.getTime();  //1218124800000

 

3.8.5.Math對象

Math可以直接拿來用!

常用屬性和方法:

Math.PI  返回圓周率的值,約等於 3.141592653589793

例如:var num = Math.PI;    // num 的值爲3.141592653589793

 

Math.exp(number)  返回 e(自然對數的底)的冪。

例如:Math.exp(1)    // e1 約等於2.718281828459045

 

Math.abs(number)  返回數字的絕對值。

例如:Math.abs(-5)    // 5

 

Math.ceil(number)   向上取整

例如:Math.ceil(3.14)    // 4

 

Math.floor(number)  向下取整

例如:Math.floor(3.14)    // 3

 

Math.round(number)  四捨五入到整數

例如:Math.round(5.67)    // 6

 

Math.random()  返回介於 0 1 之間的僞隨機數。

 

案例五:js內置對象

<!-- js內置對象 -->

<script type="text/javascript">

//一、字符串String

//1.將字符串中所有的"java"提取到一個數組中

var str = "zhang,java,wang,JAVA,li,java,zhao";

var reg1 = /java/g;

alert(str.match(reg1));

//2.將字符串中所有的"java"不分大小寫提取到一個數組中

var reg2 = /java/ig;

alert(str.match(reg2));

//3.將所有的"java"不分大小寫,全部換成"C++"

alert(str.replace(reg2,"C++"));

//4.查找第一個"java"出現的位置(不分大小寫)

alert(str.search(reg2));

 

//二、正則

//檢查str字符串是否符合如下正則

var reg3 = /wang/;

var reg4 = /^wang$/;

alert(reg3.test(str));

alert(reg4.test(str));

 

//三、數組

//arr進行排序,思考排序後的順序

var arr = ["aaa",123,"x",true,8];

alert(arr.sort());

//四、Math對象

//1.返回一個1-100之間的隨機整數

alert(Math.ceil(Math.random()*100));

//2.返回一個30-50直接的隨機數

alert(Math.round(Math.random()*20+30));

</script>

 

 

3.8.6.全局對象

全局對象沒有語法。直接調用其方法。

parseFloat(numString)  將字符串轉換成浮點數。

例如:parseFloat("13.14")    // 返回number類型的13.14

 

parseInt(numString)  將字符串轉成整數,非四捨五入。

例如:parseInt("9.99")    // 返回number類型的9

 

isNaN(numValue)  判斷一個值是否爲非數字。

例如: isNaN("abc")    // true

isNaN("123")    // false

 

eval(codeString)  判斷一個字符串並將其以腳本代碼的形式執行

例如:eval("alert(1+2)");   //會直接將"alert(1+2)"當作代碼執行,彈出3

 

3.9.自定義對象(案例6

3.9.1.方式一:構造函數定義對象

function Person(){}  // 定義一個空的Person對象

 

function Person2(參數1,參數2...){

對象內容...

} //定義一個帶參數的對象

 

3.9.2.方式二:對象直接量

var p3 = {

"key1" : "value1",

"key2" : "value2".........

}

 

3.9.3.對象中取值:

P3.key1   或者   p3["key1"]

 

案例六:自定義對象

<!-- 自定義對象 -->

<script type="text/javascript">

//1.分別用兩種方式定義一個對象,包含姓名和年齡,以及彈出姓名年齡的方法

//方式一

function Person1(){};

var p1 = new Person1();

p1.name = "尼古拉斯趙四";

p1.age = 1;

p1.run = function(){

alert(this.name+":"+this.age)

}

p1.run();

function Person2(name,age){

this.name = name;

this.age = age;

this.run = function(){

alert(this.name+":"+this.age);

}

}

var p2 = new Person2("尼古拉斯趙四",30);

p2.run();

 

//方式二

var p3 = {

"name" : "尼古拉斯趙四",

"age" : "80",

"run" : function(){

alert(this.name+":"+this.age);

}

}

p3.run();

</script>

 

 

4.DHTML

4.1.DHTML概述

DHTML: Dynamic HTML 動態的 html

DHTML並不是一門新的技術, 而是將現有的HTML, CSS, JavaScript整合在一起, 形成了DHTML技術.

 

DHTML分爲BOMDOM

BOMBrowse Object Modle 即瀏覽器對象模型,其中封裝了瀏覽器操作相關對象。

DOMDocument Object Modle 即文檔對象模型,將整個HTML文檔按照文檔結構組織成了樹形結構。

 

4.2.BOM(案例7

4.2.1.Window 對象

此對象爲全局對象,因此,調用方法或屬性時,可以省略window

 

常用事件:

onclick事件 – 當窗口被點擊時觸發

onfocus事件 – 當窗口獲得焦點時觸發

onblur事件 – 當窗口失去焦點時觸發

onload事件 – 當整個html文檔加載完之後立即觸發

 

常用方法:

alert() – 消息對話框

confirm() – 確認對話框

 

4.2.2.location對象

屬性:

href – 獲取或設置瀏覽器地址欄url。。。

案例7BOM

<!-- BOM -->

<script type="text/javascript">

//window對象

//1.在按鈕點擊時彈出提示框

function clickfn(){

alert("按鈕被點擊");

}

//2.輸入框1獲得焦點時彈出提示框

function focusfn(){

alert("輸入框1獲得焦點 ");

}

//3.輸入框2失去焦點時彈出提示框

function blurfn (){

alert("輸入框2失去焦點");

}

//4.彈出輸入框3中的value

οnlοad=function(){

//獲取輸入框3input按鈕

var inp = document.getElementById("input3");

alert(inp.value);

}

//5.點擊刪除商品按鈕,彈出提示是否刪除,如果確定,則彈出商品已刪除,否則彈出商品還在

function delfn(){

if(confirm("確認刪除商品?")){

alert("商品已刪除");

}else{

alert("商品還在");

}

}

//location對象

//1.彈出當前url

alert(location.href);

//2.將頁面url設置爲"http://www.baidu.com"

alert("此頁面將跳轉到tmooc");

location.href = "http://www.baidu.com";

</script>

 

 

4.3.DOMDOM案例)

4.3.1.獲取元素

document.getElementById("id");  通過id值獲取指定id的元素

 

document.getElementsByName("name屬性值");  通過name屬性獲取指定name值的所有元素組成的集合數組

 

document.getElementsByTagName("元素名");  通過元素的名稱獲取指定元素名的所有元素組成的集合數組

 

value屬性: 獲取或設置輸入框的value

 

innerText:  (部分瀏覽器不支持) 獲取或設置元素內的文本內容

 

innerHTML:  獲取或設置元素的html內容

 

4.3.2.元素的增刪改

 

docuemnt.createElement("div");  創建一個div元素

 

body.appendChild(oDiv);  body中追加一個子元素

 

body.removeChild(oDiv);  刪除oDiv子元素

 

body.replaceChild(oNewDiv, oDiv);  oNewDiv替換已有的子元素oDiv

 

body.insertBefore(oDiv1, oDiv);  body中插入一個子元素oDiv1, 子元素是插入在oDiv的前面

 

oDiv.cloneNode([boolean]);  克隆oDiv元素, 參數默認值爲false, 表示只克隆元素本身, 不克隆oDiv內的所有子孫元素, 如果希望克隆元素還克隆元素內容所有子孫元素, 可以傳入參數true!!!

 

Dom案例一

/* --通過ID獲取並彈出用戶名輸入框的值-- */

function demo1(){

//根據ID獲取用戶名輸入框,un即代表整個輸入框

var un = document.getElementById("username");

alert(un.value);

//可以自己設置value

un.value = "蘭姐";

}

/* --通過name屬性獲取並彈出密碼輸入框的值-- */

function demo2(){

//根據name屬性獲取密碼輸入框,因爲name屬性可以重複,所以獲取的是一個集合數組

var pwarr = document.getElementsByName("password");

//在數組中獲取第一個元素

var pw = pwarr[0];

alert(pw.value);

}

 

/* --通過元素名稱獲取並彈出確認密碼輸入框的值-- */

function demo3(){

//根據標籤名獲取確認密碼輸入框,同樣,獲取的是一個數組

var inparr = document.getElementsByTagName("input");

//獲取第三個元素

var pw2 = inparr[2];

alert(pw2.value);

}

 

/* --獲取元素內容-- */

function demo4(){

var oP = document.getElementById("pid");

//獲取p標籤中的文本內容 innerText(部分瀏覽器不支持)

alert(oP.innerText);

//獲取p標籤中的所有html內容 innerHTML(絕大部分瀏覽器都支持)

alert(oP.innerHTML);

//設置p標籤中的html內容

oP.innerHTML = "<font color='blue'>我要變身了...!</font>";

}

 

 

Dom案例二

/* --添加節點: 添加一個div元素到body的最後面-- */

function addNode(){

//獲取父元素

//var oBody = document.getElementsByTagName("body")[0];

//bodydocument的子對象,所以可以直接獲取

var oBody = document.body;

 

//創建一個遊離div元素

var oNewDiv = document.createElement("div");

//div中添加內容

oNewDiv.innerHTML = "我是新來的....!";

 

//div元素掛載到父元素上

oBody.appendChild(oNewDiv);

}

 

/* --刪除節點: 刪除bodyid值爲 div_3 div元素-- */

function deleteNode(){

//獲取父元素body

var oBody = document.body;

 

//獲取要刪除的元素div_3

var oDiv_3 = document.getElementById("div_3");

 

//解除父子關係

oBody.removeChild(oDiv_3);

}

 

/* --更新節點: 用新節點替換id值爲 div_2 div元素  -- */

function updateNode(){

//創建一個新節點

var oNewDiv = document.createElement("div");

oNewDiv.innerHTML = "我是來替換的~!";

 

//獲取被替換的元素

var oDiv_2 = document.getElementById("div_2");

 

//獲取父元素, 並通過父元素替換子元素

var oBody = oDiv_2.parentNode;

oBody.replaceChild(oNewDiv, oDiv_2);

}

 

/* --克隆節點、插入節點到指定元素的前面--*/

function copyNode(){

//獲取指定元素

var oDiv_4 = document.getElementById("div_4");

 

//克隆元素

var oCloneDiv = oDiv_4.cloneNode(true);

//false 默認值, 只克隆元素本身, 不克隆元素內容

 

//獲取父元素body

var oBody = document.body;

var oDiv_2 = document.getElementById("div_2");

//將克隆元素插入到指定位置

oBody.insertBefore(oCloneDiv,oDiv_2);

}

 

Dom案例三

/* --通過js實現訪QQ列表好友分組-- */

function openDiv(thisobj){

var oDiv = thisobj.parentNode.getElementsByTagName("div")[0];

/*

當點擊一個分組時, 如果這個分組是展開的, 點擊之後應該關閉當前分組

當點擊一個分組時, 如果這個分組是關閉的, 點擊之後應該先關閉所有, 再展開當前分組

 */

if(oDiv.style.display == "block"){//分組是展開的

oDiv.style.display = "none";

}else{//分組是關閉的

//獲取所有的分組, 依次關閉分組

var arrDiv = document.getElementsByTagName("div");

for(var i=0; i<arrDiv.length; i++){

arrDiv[i].style.display = "none";

}

//div由隱藏設置爲顯示(展開分組)

oDiv.style.display = "block";

}

}

 

 

Dom案例四

var data = {

"北京市": ["海淀區","朝陽區","豐臺區"],

"河北省": ["石家莊","唐山","秦皇島"],

"遼寧省": ["瀋陽","大連","鞍山"],

"山東省": ["青島","濟南","煙臺"]

}

//練習1

function getCountry(thisobj){

//當選項切換時, 觸發onchange事件, 執行getCountry函數, 在函數中獲取當前選中的國家並彈出!

alert(thisobj.value);

}

//練習2

function selectCity(thisobj){

//1.獲取用戶選中的省份

var prov = thisobj.value;//thisobj-->省份的select

//2.根據省份獲取省份對應的城市列表

var citys = data[prov];

 

//3.將省份對應的所有城市作爲option選項依次填充到城市select

//>>獲取城市select

var oCitySele = document.getElementById("city");

 

//>>在填充城市列表數據之前, 先清空之前的數據

oCitySele.innerHTML = "<option>--選擇城市--</option>";

        //填充城市列表數據

for(var i=0; i<citys.length; i++){

var opt = document.createElement("option");

opt.innerHTML = citys[i];

oCitySele.appendChild(opt);

}

}

 

 

 

發佈了1 篇原創文章 · 獲贊 12 · 訪問量 6804
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章