JavaScript事件(五)
DOM入門
DOM就是Html頁面的模型,將每個標簽都做為一個對象,javaScript通過調用DOM中的屬性、方法就可以對網頁中的文本框、層等元素進行編程控制。比如通過操作文本框的DOM對象,就可以讀取文本框中的值、設置文本框中的值。 javaScript→DOM就是C#→ADO.NET。DOM就是一些讓JavaScript能操作Html頁面控件的類、函數。
DOM也像WinForm一樣,通過事件、屬性、方法進行編程。
CSS+JavaScript+DOM=DHtml
DOM模型
事件
在DOM中有很多事件。演示:
//注意body的范圍。Body的范圍就是body里內容的范圍,如果沒有內容,就無法觸發事件。有時事件的響應代碼比較多,就要放到一個函數中:
function userMouseDown() {
alert('網頁被你點壞了>_<~~,賠吧!');
alert('逗你玩呢~~');
}
注:οnmοusedοwn=“userMouseDown();”中,userMouseDown后的括號不能丟(不能寫成οnmοusedοwn=“userMouseDown” ),帶()表示調用函數,直接寫函數名表示設置事件的處理函數為userMouseDown。可以這樣說吧,onclick后會觸發一個方法,
οnclick=f1;的意思就是說onclick觸發的方法就是f1.
οnclick=“f1()”的意思就是說onclick觸發的方法里調用了f1
οnclick=事件引發后的處理程序。
οnclick="??????? f(this);??????????????? "; //在onclick的事件處理程序中調用了f()方法
οnclick=f;//該事件的處理程序就是f()方法。
動態設置事件
JavaScript也可以像.Net中那樣動態設置事件,Button.Click+=…
function F1() {???? alert('In F1');???? }
function F2() {???? alert('In F2');???? }
注意: οnclick=“document.οnclick=F1;” 此處的F1不要加括號,加括號就編程了調用F1()函數,并且把返回值賦值給document.onclick了。
document.body.onclick范圍僅限于body
document.onclick范圍為整個文檔。
事件冒泡
事件冒泡:如果元素A嵌套在元素B中,那么A被點擊不僅A的onclick事件會被觸發,B的onclick也會被觸發。觸發的順序是“由內而外” 。驗證:在頁面上添加一個table、table里有tr、tr里有td,td里放一個p,在p、td、tr、table中添加onclick事件響應,例:
aaaa | bbb |
取消事件冒泡: window.event.cancelBubble = true;//IE下的寫法。
aaaa | bbb |
window.onload與body的onload
1.二者效果完全一樣,都是在頁面內容都加載完畢后才觸發。
2.由于網頁中沒有window所以在body中寫onload
3.建議使用window.onload//使用js腳本的方式高效
4.其實應該是document.onload,但是所有瀏覽器都實現到了window對象上。
事件中的this
事件中的this。除了可以使用event.srcElement在事件響應函數中,this表示
發生事件
的控件。只有在事件響應函數才能使用this獲得發生事件的控件,在事件響應函數調用的函數中不能使用(這里的this表示window對象),如果要使用則要將this傳遞給函數或者使用event.srcElement,例:
function f3() {
alert(event.srcElement.value);
}
function f4() {
//事件的調用函數中this 代表window對象
alert(this.location.href);
alert(this.value);
}
window.onload = function () {
btn5.onclick = function () {
alert(event.srcElement.value);
}
btn6.onclick = function () {
//在事件響應函數中 this代表當前觸發事件的對象
alert(this.value);
}
}
(*)this和event.srcElement的語義是不一樣的,this就是表示當前監聽事件的這個對象,event.srcElement是引發事件的對象:事件冒泡,例:
aaaa | bbb |
aaaa | bbb |
JavaScript
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。