JavaScript詳解(7.對話框和DOM、BOM、JavaScript對象)

一,對話框

一,對話框的分類

  1. 警告框 alert, 常用。

  2. 詢問框 返回提示框中的值。

  3. 確認框 返回true/false.

1,警告框

alert(‘警告的內容’);

2,詢問框

在這裏插入圖片描述

 var name = prompt("您沒有登錄,請輸入用戶名:");
  alert("your name: " + name);

3,確認框

1.               var isLogin = confirm("您確認登錄嗎?");
2.                if (isLogin) {
3.                    alert("您同意登錄");
4.                }
5.                else {
6.                    alert("您不同意登錄");
7.                   // alert("您不同意登錄2");
8.                }

在這裏插入圖片描述

二,DOM對象

HTML DOM 樹
在這裏插入圖片描述

通過可編程的對象模型,JavaScript 獲得了足夠的能力來創建動態的 HTML。

簡單的說,就是文檔內部的一些”對話“

  1. JavaScript 能夠改變頁面中的所有 HTML 元素

  2. JavaScript 能夠改變頁面中的所有 HTML 屬性

  3. JavaScript 能夠改變頁面中的所有 CSS 樣式

  4. JavaScript 能夠對頁面中的所有事件做出反應

一,DOM Event 對象

Event 對象代表事件的狀態,比如事件在其中發生的元素、鍵盤按鍵的狀態、鼠標的位置、鼠標按鈕的狀態。

事件通常與函數結合使用,函數不會在事件發生前被執行!

1,事件句柄 (Event Handlers) 也就是事件觸發源

    HTML 4.0 的新特性之一是能夠使 HTML 事件觸發瀏覽器中的行爲,比如當用戶點擊某個 HTML 元素時啓動一段 JavaScript。下面是一個屬性列表,可將之插入 HTML 標籤以定義事件的行爲。
在這裏插入圖片描述
2,鼠標 / 鍵盤屬性
在這裏插入圖片描述
3,IE 屬性

除了上面的鼠標/事件屬性,IE 瀏覽器還支持下面的屬性:【基本不怎麼用,IE是個奇葩】
在這裏插入圖片描述
4,相關實例

<html>
<head>
<script type="text/javascript">
function whichButton(event)
{
var btnNum = event.button;
if (btnNum==2)
  {
  alert("您點擊了鼠標右鍵!")
  }
else if(btnNum==0)
  {
  alert("您點擊了鼠標左鍵!")
  }
else if(btnNum==1)
  {
  alert("您點擊了鼠標中鍵!");
  }
else
  {
  alert("您點擊了" + btnNum+ "號鍵,我不能確定它的名稱。");
  }
}
</script>
</head>
<body onmousedown="whichButton(event)">
<p>請在文檔中點擊鼠標。一個消息框會提示出您點擊了哪個鼠標按鍵。</p>
</body>
</html>

得到客戶端的座標

<html>
<head>
<script type="text/javascript">
function show_coords(event)
{
x=event.clientX
y=event.clientY
alert("X 座標: " + x + ", Y 座標: " + y)
}
</script>
</head>
<body onmousedown="show_coords(event)">
<p>請在文檔中點擊。一個消息框會提示出鼠標指針的 x 和 y 座標。</p>
</body>
</html>

得到鍵盤的事件

<html>
<head>
<script type="text/javascript">
function whichButton(event)
{
alert(event.keyCode)
}
</script>
</head>
<body onkeyup="whichButton(event)">
<p><b>註釋:</b>在測試這個例子時,要確保右側的框架獲得了焦點。</p>
<p>在鍵盤上按一個鍵。消息框會提示出該按鍵的 unicode。</p>
</body>
</html>

得到屏幕的座標

<html>
<head>
<script type="text/javascript">
function coordinates(event)
{
x=event.screenX
y=event.screenY
alert("X=" + x + " Y=" + y)
}
</script>
</head>
<body onmousedown="coordinates(event)">
<p>
在文檔中點擊某個位置。消息框會提示出指針相對於屏幕的 x 和 y 座標。
</p>
</body>
</html>

二,DOM Document 對象【window.document.】

每個載入瀏覽器的 HTML 文檔都會成爲 Document 對象。

Document 對象使我們可以從腳本中對 HTML 頁面中的所有元素進行訪問。

提示: Document 對象是 Window 對象的一部分,可通過 window.document 屬性對其進行訪問。

Document 對象集合
在這裏插入圖片描述
Document 對象屬性
在這裏插入圖片描述
Document 對象方法
在這裏插入圖片描述
Document 對象描述

HTMLDocument 接口對 DOM Document 接口進行了擴展,定義 HTML 專用的屬性和方法。

很多屬性和方法都是 HTMLCollection 對象(實際上是可以用數組或名稱索引的只讀數組),其中保存了對錨、表單、鏈接以及其他可腳本元素的引用。

這些集合屬性都源自於 0 級 DOM。它們已經被 Document.getElementsByTagName() 所取代,但是仍然常常使用,因爲他們很方便。

write() 方法值得注意,在文檔載入和解析的時候,它允許一個腳本向文檔中插入動態生成的內容。

注意,在 1 級 DOM 中,HTMLDocument 定義了一個名爲 getElementById() 的非常有用的方法。在 2 級 DOM 中,該方法已經被轉移到了 Document 接口,它現在由 HTMLDocument 繼承而不是由它定義了。

以上說明的使用方法是document.xxxx 或者 window.document.xxx

三,DOM Element 對象【元素對象】

在 HTML DOM 中,Element 對象表示 HTML 元素。

Element 對象可以擁有類型爲元素節點、文本節點、註釋節點的子節點。

NodeList 對象表示節點列表,比如 HTML 元素的子節點集合。
在這裏插入圖片描述
在這裏插入圖片描述

四,DOM Attribute 對象【訪問元素中的屬性,先得到元素,再根據元素去訪問屬性】

在 HTML DOM (文檔對象模型)中,每個部分都是節點:

文檔本身是文檔節點

所有 HTML 元素是元素節點

所有 HTML 屬性是屬性節點

HTML 元素內的文本是文本節點

註釋是註釋節點cookie

注意,要訪問屬性必須是document文檔加載完成才能訪問,也就是script代碼必須寫到body之後

屬性
在這裏插入圖片描述

document.getElementsByTagName(“button”)[0].attributes[0].name;

三,BOM對象

前言

  1. 定義:瀏覽器對象模型(Browser Object Model)尚無正式標準。

  2. 作用:瀏覽器對象模型 (BOM) 使 JavaScript 有能力與瀏覽器“對話”。

由於現代瀏覽器已經(幾乎)實現了 JavaScript 交互性方面的相同方法和屬性,因此常被認爲是 BOM 的方法和屬性。

  1. 以下是所有的BOM對象
  • Window【掌握】

  • Screen【掌握】

  • Location【掌握】

  • History【掌握】

  • Navigator

  • PopupAlert

  • Timing

  • Cookies【熟悉】

一,Window

注意:Window 和window不是同一個東西

1.window.name=1;  
2.console.log(Window.name);//Window  
3.console.log(window.name);//1  
4.console.log(window instanceof  Window);//true  

從上面的代碼可以看出來Window並不等於window 通過instanceof進行判斷window是Window的實例

1,所有瀏覽器都支持 window 對象。它表示瀏覽器窗口。

  • 所有 JavaScript 全局對象、函數以及變量均自動成爲 window 對象的成員。

  • 全局變量是 window 對象的屬性。

  • 全局函數是 window 對象的方法。

  • 甚至 HTML DOM 的 document 也是 window 對象的屬性之一:

window.document.getElementById(“header”);

與下面的代碼相同:

document.getElementById(“header”);

2,Window 尺寸

有三種方法能夠確定瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動條)。

對於Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

window.innerHeight - 瀏覽器窗口的內部高度

window.innerWidth - 瀏覽器窗口的內部寬度

對於 Internet Explorer 8、7、6、5:

document.documentElement.clientHeight

document.documentElement.clientWidth

或者

document.body.clientHeight

document.body.clientWidth

實用的 JavaScript 方案(涵蓋所有瀏覽器):

1.<!DOCTYPE html>
2.<html>
3.<body>
4.
5.<p id="demo"></p>
6.
7.<script>
8.var w=window.innerWidth
9.|| document.documentElement.clientWidth
10.|| document.body.clientWidth;
11.
12.var h=window.innerHeight
13.|| document.documentElement.clientHeight
14.|| document.body.clientHeight;
15.
16.x=document.getElementById("demo");
17.x.innerHTML="瀏覽器的內部窗口寬度:" + w + ",高度:" + h + "。"
18.</script>
19.
20.</body>
21.</html>

其他 Window 方法

一些其他方法:

window.open(‘http://www.baidu.com’) - 打開新窗口

window.close() - 關閉當前窗口 只能關閉使用window.open的窗口

window.moveTo(x,y) - 移動當前窗口

window.resizeTo(width,height) - 調整當前窗口的尺寸

window.setInterval(code,millisec[,“lang”])

1.<html>
2.<body>
3.
4.<input type="text" id="clock" size="35" />
5.<script language=javascript>
6.var int=self.setInterval("clock()",50)
7.function clock()
8.  {
9.  var t=new Date()
10.  document.getElementById("clock").value=t
11.  }
12.</script>
13.<button onclick="int=window.clearInterval(int)">Stop interval</button>
14.
15.</body>
16.</html>

window.setTimeout() 方法用於在指定的毫秒數後調用函數或計算表達式。

setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。

一個時鐘

1.<!DOCTYPE html>
2.<html>
3.    <head>
4.        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5.        <title>Untitled Document</title>
6.        <script>
7.            function showtime(){
8.                var d=new Date();
9.                var year=d.getFullYear();
10.                var month=d.getMonth();
11.                var day=d.getDay();
12.                var hours=d.getHours();
13.                var min=d.getMinutes();
14.                var sec=d.getSeconds();
15.                var misec=d.getMilliseconds();
16.                var str=year+"-"+month+"-"+day+" "+hours+":"+min+":"+sec+":"+misec;
17.                var mytime=window.document.getElementById("mytime");
18.                mytime.innerHTML=str;
19.                window.setTimeout('showtime()',1000);
20.            }
21.        </script>
22.    </head>
23.    <body onload="showtime()">
24.       	<div id="mytime" style="border: 2px solid; border-color: green;color: red;">
25.       	</div>
26.    </body>
27.
28.</html>

在這裏插入圖片描述

二,Screen

window.screen 對象包含有關用戶屏幕的信息。

window.screen 對象在編寫時可以不使用 window 這個前綴。

一些屬性:

screen.availWidth - 可用的屏幕寬度

screen.availHeight - 可用的屏幕高度

可以寬度 screen.availWidth 屬性返回訪問者屏幕的寬度,以像素計,減去界面特性,比如窗口任務欄。

可用高度 screen.availHeight 屬性返回訪問者屏幕的高度,以像素計,減去界面特性,比如窗口任務欄。

<script>
document.write("可用寬度:" + screen.availWidth);
document.write("可用高度:" + screen.availHeight);
</script>

三,Location

window.location 對象在編寫時可不使用 window 這個前綴。

對象屬性
在這裏插入圖片描述
對象方法
在這裏插入圖片描述

window.location.replace(“http://www.w3school.com.cn”)

window.location.assign(“http://www.w3school.com.cn”)

四,History

History 對象包含用戶(在瀏覽器窗口中)訪問過的 URL。

History 對象是 window 對象的一部分,可通過 window.history 屬性對其進行訪問。

註釋:沒有應用於 History 對象的公開標準,不過所有瀏覽器都支持該對象。
在這裏插入圖片描述
例子

下面一行代碼執行的操作與單擊後退按鈕執行的操作一樣:

history.back()

下面一行代碼執行的操作與單擊兩次後退按鈕執行的操作一樣:

history.go(-2)

五,Cookies【熟悉】

1,創建Cookie

JavaScript 可以使用 document.cookie 屬性來創建 、讀取、及刪除 cookie。

JavaScript 中,創建 cookie 如下所示:

document.cookie=“username=Leijh”;

您還可以爲 cookie 添加一個過期時間(以 UTC 或 GMT 時間)。默認情況下,cookie 在瀏覽器關閉時刪除:document.cookie=“username=Leijh; expires=Thu, 18 Dec 2017 12:00:00 GMT”;

您可以使用 path 參數告訴瀏覽器 cookie 的路徑。默認情況下,cookie 屬於當前頁面。

document.cookie=“username=Leijh; expires=Thu, 18 Dec 2017 12:00:00 GMT; path=/”;

2,讀取 Cookie

在 JavaScript 中, 可以使用以下代碼來讀取 cookie:

var x = document.cookie;

注意:document.cookie 將以字符串的方式返回所有的 cookie,類型格式: cookie1=value; cookie2=value; cookie3=value;

3,修改 Cookie

在 JavaScript 中,修改 cookie 類似於創建 cookie,如下所示:

document.cookie=“username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/”;

舊的 cookie 將被覆蓋。

4,刪除 Cookie

刪除 cookie 非常簡單。您只需要設置 expires 參數爲以前的時間即可,如下所示,設置爲 Thu, 01 Jan 1970 00:00:00 GMT:

document.cookie = “username=; expires=Thu, 01 Jan 1970 00:00:00 GMT”;

注意,當您刪除時不必指定 cookie 的值。

5,完整實例

1.<!DOCTYPE html>
2.<html>
3.<head>
4.<meta charset="utf-8">
5.<title>Cookies的使用</title>
6.</head>
7.<head>
8.<script>
9.function setCookie(cname,cvalue,exdays){
10.	var d = new Date();
11.	d.setTime(d.getTime()+(exdays*24*60*60*1000));
12.	var expires = "expires="+d.toGMTString();
13.	document.cookie = cname+"="+cvalue+"; "+expires;
14.}
15.function getCookie(cname){
16.	var name = cname + "=";
17.	var ca = document.cookie.split(';');
18.	for(var i=0; i<ca.length; i++) {
19.		var c = ca[i].trim();
20.		if (c.indexOf(name)==0) return c.substring(name.length,c.length);
21.	}
22.	return "";
23.}
24.function checkCookie(){
25.	var user=getCookie("username");
26.	if (user!=""){
27.		alert("Welcome again " + user);
28.	}
29.	else {
30.		user = prompt("Please enter your name:","");
31.  		if (user!="" && user!=null){
32.    		setCookie("username",user,30);
33.    	}
34.	}
35.}
36.</script>
37.</head>
38.	
39.<body onload="checkCookie()"></body>
40.	
41.</html>

四,JavaScript對象

一,Date

http://www.w3school.com.cn/jsref/jsref_obj_date.asp

二,Math

http://www.w3school.com.cn/jsref/jsref_obj_math.asp

三,自定義對象

1.<script type="text/javascript">  
2.    function Person(name,age){  
3.        this.name=name;  
4.        this.age=age;  
5.    }  
6.    Person.prototype.sayHello=function(){  
7.        alert("使用原型得到Name:"+this.name);  
8.    }  
9.    var per=new Person("馬小倩",21);  
10.    per.sayHello(); //輸出:使用原型得到Name:馬小倩  
11.
12.      
13.    function Student(){}  
14.    Student.prototype=new Person("洪如彤",21);  
15.    var stu=new Student();  
16.    Student.prototype.grade=5;  
17.    Student.prototype.intr=function(){  
18.        alert(this.grade);  
19.    }  
20.    stu.sayHello();//輸出:使用原型得到Name:洪如彤  
21.    stu.intr();//輸出:5  
22.</script>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章