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。
這些話都是可笑錯誤的,形而上學的。為什麼說形而上學,就是學了些用法而臆想原理,夾雜很多錯誤認識。
取法乎上,只得其中,取法其中,只得其下。如果你好意思把這些錯漏百出的表述說給初學者?而跟你學,得到什麼呢?不該指責其他認識到這些錯漏的人。...餘下全文>>