天天看點

黑馬程式員_學習日記17_Dom(1)

JavaScript和Dom的關系好比C#和.NETFramework的關系。

内容:使用JavaScript操作Dom進行DHTML開發。

Alert都不是JavaScript中定義的東西,它是Dom方法;好比WinForm中的MessageBox

Dom 就是HTML頁面的模型,将每個标簽都作為一個對象。 Dom也想WinForm一樣,通過事件、屬性、方法進行程式設計

CSS+JavaScript+Dom=DHTML

事件:

<head>

    <title>無标題頁</title>

    <script type="text/jscript">

        functionbodymousedown(){

            alert('别點我!');

            alert('哈哈');

        }

        functionf1(){

            alert("我是f1");

        }

        functionf2(){

            alert("我是f2");

        }

    </script>

</head>

<body>

<input type="button" onclick="document.οndblclick=f1" value="關聯事件1" />

<input type="button" onclick="document.οndblclick=f2" value="關聯事件2" />

</body>

window對象 代表目前浏覽器視窗,使用window對象的屬性、方法的時候可以省略window,比如window.alert(‘a’)可以省略成alert.(‘a’)

(1)    alert方法,彈出消息對話框

(2)  confirm方法,顯示确定、取消對話框

(3)  重新導航到指定的位址:navigate(“http://www.rupeng.com”);

(4)  setInterval每隔一段時間執行指定的代碼,第一個參數為代碼的字元串,第二個參數為間隔時間(機關毫秒),傳回值為定時器的辨別

setInterval(“alert(‘hello’)”,5000);

(5)    clearInterval取消setInterval的定時執行,相當于Timer中的Enabled=False。因為setInterval可以設定多個定時,是以clearInterval要指定清除那個定時的辨別,即setInterval的傳回值。

var intervalld =setInterval(“alert(‘hello’)”,5000);

clearInterval(intervalld);

(6)    setTimeout也是定時執行,但是不像setInterval那樣是重複的定時執行,隻執行一次,clearTimeout也是清除定時。(翻譯:Interval 間隔;Timeout 逾時)

var timeoutId = setTimeout(“alert(‘hello’)”,2000);

body、document對象的事件

(1)      onload:網頁加載完畢時觸發。浏覽器是一邊下載下傳文檔、一遍解析執行,可能會出現JavaScript執行時需要操作某個元素,這個元素還沒有加載,如果這樣就要把操作的代碼放到onload事件中,或者可以把JavaScript放到元素之後。元素也有onload,表示該元素加載完成

(2)     onunload:網頁關閉(或離開)後觸發。

(3)     onbeforeunload:在網頁準備關閉(或離開)時觸發

在事件中為”window.event.returnValue”指派(要顯示的警告消息),這樣離開視窗(比如前進、後退、關閉)就會彈出确認消息

<body οnbefοreunlοad=”window.event.returnValue=’真的要放棄發帖退出嗎?’”>

window對象的屬性

l        window.location.href=”http://www.itcast.cn”。重新導向新的位址,和navigate方法效果一樣。window.location.reload()重新整理頁面

l        window.event 是非常重要的屬性,用來獲得發生事件時的資訊,事件不局限于window對象的事件,所有元素的事件都可以通過event屬性取到相關資訊。類似于WinForm中的e(EventArg)

altKey屬性,bool類型,表示發生事件時alt鍵是否被按下,類似的還有ctrlKey、shiftKey屬性,例:

<input type="button" value="點選" onclick="if(window.event.ctrlKey){alert('按下了ctrl')};else{alert('普通點選')};" />

clientX、clientY發生事件時滑鼠在客戶區的坐标;screenX、screenY發生事件時滑鼠在螢幕上的坐标;offsetX、offsetY發生事件時滑鼠相對于事件源的坐标。

returnValue屬性,如果将returnValue設定為false,就會取消預設事件的處理。在超連結的onclick裡面禁止通路href的頁面,在表單校驗的時候禁止送出表單到伺服器。

srcElement,獲得事件源對象

keyCode,發生事件時的按鍵值

button,發生事件時滑鼠按鍵,1為左鍵,2為右鍵,3為左右鍵同時按

l        clipboardData對象,對剪貼闆的操作。clearData(“Text”)清空剪貼闆;getData(“Text”)讀取剪貼闆的值,傳回值為剪貼闆中的内容;setData(“Text”,val),設定剪貼闆中的值。

當複制的時候body的oncopy方法被觸發,直接return false就是禁止複制。

<body οncοpy=”alert(‘禁止複制!’);returnfalse;”>

很多元素也有oncopy、onpaste事件

在網站中複制文章的時候,為了防止那些拷貝黨不添加文章來源,自動在複制的内容後添加版權申明。

function modifyClipboard(){

    clipboardData.setData(‘Text’,clipboardData.getData(‘Text’)+’本文來自傳智播客技術專區,轉載請注明來源。’+location.herf);

}

οncοpy=”setTimeout(‘modifyClipboard()’,100)”

使用者複制動作發生0.1秒後再去改粘貼闆中的内容。

不能直接在oncopy中執行對粘貼闆的操作,是以設定定時器,0.1秒後執行,這樣就不在oncopy的執行調用棧上了。

l        history操作曆史記錄

window.history.back() 後退;window.history.forward()前進

也可以用window.history.go(-1)  window.history.go(1)

l        document

document的方法:

(1)  write:向文檔中寫入内容。writeln,和write差不多,隻不過最後添加一個回車。

<input type=”button” value=”點選” οnclick=”document.write(‘<fontcolor=red>你好</font>’)”/>

在onclick等事件中寫的代碼會沖掉頁面中的内容,隻有在頁面加載過程中write才會與原有内容融合在一起

(2)getElementsById:(常用),根據元素的Id擷取對象,網頁中Id不能重複。也可以通過元素的Id來引用元素,但是有有效範圍之類的問題,是以不建議直接通過Id操作元素,而是通過getElementsById

繼續閱讀