Javascript基礎知識(二)事件,javascript基礎知識

來源:互聯網
上載者:User

Javascript基礎知識(二)事件,javascript基礎知識

Event對象:(event對象是window對象的屬性,當事件發生時,同時產生event對象,事件結束,event對象消失)

IE中:window.event;//擷取對象

DOM中:argument[0];//擷取對象

IE中Event對象常用的屬性方法:

1.clientX:事件發生時,滑鼠指標在客戶區(不包括工具列,捲軸等)的X座標;

2.clientY:事件發生時,滑鼠指標在客戶區(不包括工具列,捲軸等)的Y座標;

3.keyCode:對於keyCode事件,指示按下的鍵的Unicode字元,對於keydown/keyup事件,指示按下的鍵盤是數字表示器(獲得按鍵的數值);

4.offsetX:滑鼠指標相對於引發事件的對象的X座標;

5.offsetY:滑鼠指標相對於引發事件的對象的Y座標;

6.srcElement:導致事件發生的元素;

DOM中event對象常用的屬性方法:

1.clientX;

2.clientY;

3.pageX;滑鼠指標相對於頁面的X座標;

4.pageY;滑鼠指標相對於頁面的Y座標;

5.StopPropagation:調用該方法可以阻止事件的進一步傳播(冒泡);

6.target:觸發的事件元素/對象;

7.type:事件的名稱;

兩種event對象的相同點和不同點

相同點:

1.擷取事件類型;

2.擷取鍵盤代碼(keydown/keyup事件);

3.檢測Shift,Alt,Ctrl;

4.擷取客戶區座標;

5.擷取螢幕座標;

不同點:

1.擷取目標;

//IE:var oTarget=oEvent.srcElement;

//DOM: var oTarget=oEvent.target;

2.擷取字元碼;

//IE: var iCharCode=oEvent.keyCode;

//DOM: var iCharCode=oEvent.charCode;

3.阻止事件的預設行為;

//IE: oEvent.returnValue=false;

//DOM: oEvent.preventDefault;

4.終止冒泡:

//IE:oEvent.cancelBubble=true;

//DOM:oEvent.stopPropagation

事件類型:

一.滑鼠事件:

onmouseover:當滑鼠移入時;

onmouseout:當滑鼠移出時;

onmousedown:當按下滑鼠時;

onmouseup:當抬起滑鼠時;

onclick:點擊滑鼠左鍵時;

ondblclick:雙擊滑鼠左鍵時;

二.鍵盤事件:

onkeydown:當使用者在鍵盤上按下一個鍵時發生;

onkeyup:當使用者釋放一個按下的鍵時發生;

keypress:當使用者一直按著鍵不放時;

三.HTML事件:

onload:載入頁面時;

onunload:卸載頁面時;

abort:當使用者終止裝載進程之前,如果他還沒有被完全轉載,發生abort事件

error:javascript發生錯誤時,產生的事件;

select:在一個input或者textarea中,使用者選擇字元時,觸發的select事件

change:在一個input或者textarea中,當它失去焦點,在select中觸發change事件

submit:當表單被提交時,觸發submit事件;

reset:重設

resize:當視窗或架構尺寸調整時觸發的事件;

scroll:當使用者滾動或有捲軸時觸發的事件;

focus:失去焦點時;

blur:獲得焦點時;

Javascript的事件模型

1.Javascript事件模型:1.冒泡類型: <input type="button">當使用者點擊按鈕時:input-body-html-document-window(從下往上冒泡)IE瀏覽器只是用冒泡

    2.捕獲類型: <input type="button">當使用者點擊按鈕時:window-document-html-body-input (從上往下)

經過ECMA標準化後,其他瀏覽器都支援兩種類型,捕獲先發生。

2.傳統事件書寫的三種方式:

1.<input type="button" onclick="alert('helloworld!')">

2.<input type="button onclick=name1()">======<script>function name1(){alert('helloword!');}</script> //有名函數

3.<input type="button" id="input1">  //匿名函數
複製代碼 代碼如下:
<script>
 Var button1=document.getElementById("input1");
 button1.onclick=funtion(){
 alert('helloword!')
 }
</script>

3.現代事件書寫方式:
複製代碼 代碼如下:
<input type="button" id="input1">  //IE中添加事件

<script>
 var fnclick(){
 alert("我被點擊了")
 }
 var Oinput=document.getElementById("input1");
 Oinput.attachEvent("onclick",fnclick);
 --------------------------------------
 Oinput.detachEvent("onclick",fnclick);//IE中刪除事件
</script>

複製代碼 代碼如下:
<input type="button" id="input1">  //DOM中添加事件

<script>
 var fnclick(){
 alert("我被點擊了")
 }
 var Oinput=document.getElementById("input1");
 Oinput.addEventListener("onclick",fnclick,true);
 --------------------------------------
 Oinput.removeEventListener("onclick",fnclick);//DOM中刪除事件
</script>

複製代碼 代碼如下:
<input type="button" id="input1"> //相容IE和DOM添加事件

<script>
 var fnclick1=function(){alert("我被點擊了")}
 var fnclick2=function(){alert("我被點擊了")}
 var Oinput=document.getElementById("input1");
 if(document.attachEvent){
 Oinput.attachEvent("onclick",fnclick1)
 Oinput.attachEvent("onclick",fnclick2)
 }
 else(document.addEventListener){
 Oinput.addEventListener("click",fnclick1,true)
 Oinput.addEventListener("click",fnclick2,true)
 }
</script>


javascript基礎知識

你學過JAVA應該很好理解的~~

對象可以有層次性的~~~

public class test {
public string a = "a";
}
test t1 = new test();
test1.a = "b";

就是類似以上的意思啊~~

document是DOM實現的~~ 樓上說的是錯的..javascript不提供DOM和BOM得對象..這些對象的實現是所在的瀏覽器提供的~~在IE中...可以用vbscript也能實現document...當然還有其他語言可以實現..

all是IE特有的一個屬性..好像是,這個不敢肯定~~意思是返回document下的所有DOM的集合...
而form.numeric是對取form對象下的numeric對象~可能是這樣的
<form id="form"><input type="text" id="numeric" /></form>

推薦書是 <JavaScript進階程式設計> ~ 是本基礎書~~

如果不想購買書~~可以下2本手冊...JScript手冊(是MS的JScript語言,基本可以參考99%)和DHTML手冊(也是MS的..可以參考DOM)~
 
javascript基礎問題

var bbb=aaa();//bbb被賦值為aaa的傳回值
==============
var bbb=aaa;
//bbb被(地址)賦值為aaa,由於這裡aaa是“函數對象”,bbb也成了函數對象,也成了一個函數
可以調用bbb(); 這裡“函數對象”和弱類型無關,這是把函數作為頭等公民(First-class function)的語言設計。

javascript無嚴格意義上的“引用”或“指標”。
套用其他語言的概念是屬於比較形而上學的。
===========================

xxx=getElementById("idname"); //返回一個DOM的element對象,id為idname
xxx.onchange=func; //把這個element對象的onchange方法重寫(我想到的是英文override,之前用了錯誤的中文譯法),而這裡文法含義是重新賦值為func這一函數對象
Javascript強調函數對象這一概念。因為函數是最基本的對象,是頭等公民。
function foo(){ } //建立函數
等價於
var foo=new Function(){ } //建立函數對象
所以
xxx.onchange=foo
xxx.onchange=new Function("");
xxx.onchange=function(){}
都是把onchange指向另外一個函數(對象)
================

to 那個刀槍不入的francis674
你的回答,太誤人子弟,別人看不過去

“var a = funcitn() {}”
“a是變數,類型是function,alert(a)出來的是函數體的文本定義”
不僅拼字錯誤,而且解釋不出所以然,只好形而上學的說了內容
自己理解不透就來栽贓我,我從未提到
var a = function() {}
可以告訴題主,這是以函式宣告的方式定義無名函數。
而,var a = new Function("") 是定義函數對象的方式
這2種是互連的

"xxx.onchange=func 這個是事件委託" //絕非事件委託,僅僅重新指定對象,在沒放在事件模型時,文法上僅僅重新指定對象,重寫override對象的方法

“本質的區別就是可以理解為一個是變數,一個是指標,實際上都是變數。”
進階語言從來就沒有指標,瞎比擬就是形而上學。

“javascript是弱類型的指令碼語言。 函數和變數都稱為變數。" //函數能成為變數嗎?
“javascript 不支援oop等特性” //js不支援oop還叫js嗎?js屬於prototype模型的面對對象程式設計語言,非常支援oop。
這些話都是可笑錯誤的,形而上學的。為什麼說形而上學,就是學了些用法而臆想原理,夾雜很多錯誤認識。
取法乎上,只得其中,取法其中,只得其下。如果你好意思把這些錯漏百出的表述說給初學者?而跟你學,得到什麼呢?不該指責其他認識到這些錯漏的人。...餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.