日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

跟着杨中科学习asp.net之javascript

發布時間:2023/12/20 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跟着杨中科学习asp.net之javascript 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Javascript教程

Javascript語言基礎

內容:JavaScript語言。JavaScript語法很多

和C#、Java、C等語言類似,因此本課只講

JavaScript特有的語法,不會再講解編程的基

本原理。

目標:掌握JavaScript語法,為Dom編程和

JQuery打基礎。

什么是JavaScript

l HTML只是描述網頁長相的標記語言,沒有計算、判斷能力,如

果所有計算、判斷(比如判斷文本框是否為空、判斷兩次密碼是

否輸入一致)都放到服務器端執行的話網頁的話頁面會非常慢、

用起來也很難用,對服務器的壓力也很大,因此要求能在瀏覽器

中執行一些簡單的運算、判斷。JavaScript就是一種在瀏覽器端

執行的語言。(純前端語言)

l JavaScript的Java沒直接的關系,唯一的關系就是JavaScript原

名LiveScript,后來吸收了Java的一些特性,升級為JavaScript。

JavaScript有時被簡稱為JS。

l JavaScript是解釋型語言(對應為編譯型語言如C#),無需編譯就可以隨時運行,這樣哪怕

語法有錯誤,沒有語法錯誤的部分還是能正確運行。

JS的開發環境

l VS中JavaScript、JQuery的自動完成功能:在VS2010中直接有,

VS2008需要安裝VisualStudio 2008SP1(

http://www.microsoft.com/downloads/details.aspx?displaylang=zhcn&

familyid=27673c47-b3b5-4c67-bd99-84e525b5ce61)和VS90SP1-

KB958502-x86(

http://code.msdn.microsoft.com/KB958502/Release/ProjectReleases.a

spx?ReleaseId=1736)補丁會更強更好用。如果實在“.” 不出來也沒關

系,不影響運行。注意:先安裝2008SP1,再安裝VS90SP1-

KB958502-x86。

l JS是非常靈活的動態語言,不像C#等靜態語言那樣嚴謹,開發工具中

的JS完成功能只是一個輔助、建議,“.”出來的成員調用可能不能用,“.”

不出來的成員也許也能調用,因此不要因為“點兒不出來”而擔心代碼有

問題。

l VS2008的HTML編輯器中觸發JavaScript自動完成:Ctrl+J。

JS入門

l <script type="text/javascript">

l alert(new Date().toLocaleDateString());

l </script>

l <script language="....>已經不推薦使用。

l JavaScript代碼放到<script>標簽中,script可以放到<head>、<body>等任意位

置,而且可以有不止一個<script>標簽。alert函數是彈出消息窗口,new Date()

是創建一個Date類的對象,默認值就是當前時間。JS是大小寫敏感的。

<head>

<title></title>

<style type="text/css"></style>

<script type="text/javascript">

alert(new Date().toLocaleDateString());

</script>

</head>

<body>

</body>

</html>

l 放到<head>中的<script>在body加載之前就已經運行了。寫在body中的<script>

是隨著頁面的加載而一個個執行的。

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title></title>

<style type="text/css"></style>

<script type="text/javascript">

alert(new Date().toLocaleDateString());

</script>

<script type="text/javascript">

alert("唯有知情一片月,曾窺飛鳥入朝陽!");

</script>

</head>

<body>

<script type="text/javascript">

alert("玉京星闕!");

</script>

aaaaaaaaaaa

<script type="text/javascript">

alert("無人唱徹!");

</script>

bbbbbbbbbbbbbbbbb

</body>

</html>

l 除了可以在頁面中聲明JavaScript以外,還可以將JavaScript寫到單獨的js文件中

,然后在頁面中引入:<script src="test.js" type="text/javascript"></script>。聲

明到單獨的js文件的好處是多頁面也可以共享、減小網絡流量。js文件的CDN(*)

<script src="common.js" type="text/javascript">

</script>

引用公用的js文件

l 注意:不要寫成<script src="test.js" type="text/javascript"/>否則會有問題,這是

一個比較特殊的地方。

事件

l 在超鏈接的點擊里執行JavaScript:

<a href="javascript:alert(88)">發發</a>

l JavaScript中也有事件的概念,當按鈕被點擊的時候也可以執行

JavaScript:

? <input type="button" οnclick="alert(99)" value="久久"/>

? 只有超鏈接的href中的JavaScript中才需要加“"javascript:”,

因為它不是事件,而是把“"javascript:”看成像“http:”、“ftp:”、

“thunder://”、“ed2k://”、"mailto:"一樣的網絡協議,交由js解

析引擎處理。只有href中這是這是一個特例。

JS的變量

l JavaScript中即可以使用雙引號聲明字符串,也可以使用單引號

聲明字符串。主要是為了方便和html集成,避免轉義符的麻煩。

l JavaScript中有null、undefined兩種,null表示變量的值為空,

undefined則表示變量還沒有指向任何的對象,未初始化。兩者

的區別參考資料。

l JavaScript是弱類型語言(沒有那么嚴謹完善的機制,沒有類型一說),聲明變量的時候無法:int i=0;只能通過var i=0;(聲明變量為i指向0的整數,一旦指向0就是int類型)聲明變量,和C#中的var不一樣,不是C#中那樣的類型推斷。

l JavaScript中也可以不用var聲明變量,直接用,這樣的變量是“

全局變量”,因此除非確實想用全局變量,否則使用的時候最好

加上var。

l JS是動態類型的,因此var i=0;i="abc";是合法的。

JS除錯與調試

l 如果JavaScript中的代碼有語法錯誤,瀏覽器會彈出報錯信息,

查看報錯信息就能幫助排查錯誤。

l JavaScript的調試,使用VS可以很方便的進行JavaScript的調試

,調試時需要注意幾點:

? IE6的調試選項要打開,Internet選項→高級,去掉“禁用腳本

調試”前的勾選。

? 以調試方式運行網頁。

? 設置斷點、監視變量等操作和C#一樣。

l 案例:用循環語句的方法計算1到100之間整數的和

<script type="text/javascript">

// alert("唯有知情一片月,曾窺飛鳥入朝陽!");

var sum = 0;

for (var i = 0; i <= 100; i++) {

sum += i;

}

alert(sum);

</script>

判斷變量初始化

JavaScript中判斷變量、參數是否初始化的三種方法:

var x;

if (x == null) {

alert("null");

}

if (typeof (x) == "undefined") {

alert('undefined');

}

if (!x) {alert('不x');}

if(x){}//變量被初始化了或者變量不為空或者變量不為0.

推薦用最后一種方法。

函數的聲明

l JavaScript中聲明函數的方式:

function add(i1, i2) {

return i1 + i2;

}

int add(int i1,int i2)//C#寫法

l 不需要聲明返回值類型、參數類型。函數定義以function開頭。

var r = add(1, 2);

alert(r);

r = add("你好", "tom");

alert(r);

l JavaScript中不像C#中那樣要求所有路徑都有返回值,沒有返回值就是

undefined。

l 易錯:自定義函數名不要和js內置、dom內置方法重名,比如selectall、

focus等函數名不要用。

匿名函數

var f1 = function(i1, i2) {

return i1 + i2;

}

alert(f1(1,2));

l 類似于C#中的匿名函數。

l 這種匿名函數的用法在JQuery中的非常多

l alert(function(i1, i2) { return i1 + i2; }(10,10));//直接聲明一個匿名

函數,立即使用。用匿名函數省得定義一個用一次就不用的函數

,而且免了命名沖突的問題,js中沒有命名空間的概念,因此很

容易函數名字沖突。通過例子發現一旦命名沖突以最后聲明的為

l 必須<script src="my1.js" type="text/javascript"></script>不能:

<script src="my1.js" type="text/javascript"/>

JS面向對象基礎(*)

l JavaScript中沒有類的語法,是用函數閉包(closure)模擬出來的,下面講解的時候

還是用C#中的類、構造函數的概念,JavaScript中String、Date等“類”都被叫做“對象”

,挺怪,方便初學者理解,不嚴謹。JavaScript中聲明類(類不是類,是對象):

function Person(name, age) {

this.Name = name;

this.Age = age;

this.SayHello = function () {

alert("你好,我是" + this.Name + ",我" + this.Age + "歲了");

}

}

var p1 = new Person("tom", 20);

p1.SayHello();

l 必須要聲明類名,function Person(name,age)可以看做是聲明構造函數,Name、Age

這些屬性也是使用者動態添加了。var p1 = Person("tom", 30);//不要丟了new,否則就

變成調用函數了,p1為undefined。new 相當于創建了函數的一個實例

String對象(*)

l length屬性;

l charAt方法;

l indexOf;

l match、replace、search方法,正則表達式相關

l split

l substr、substring

Array對象

l JavaScript中的Array對象就是數組,首先是一個動態數組,而且

是一個像C#中數組、ArrayList、Hashtable等的超強綜合體。

var names = new Array();

names[0] = "tom";

names[1] = "jerry";

names[2] = "lily";

for (var i = 0; i < names.length; i++) {

alert(names[i]);

}

var names = new Array();

names[0] = "tom";

names[1] = "jerry";

names[2] = "lily";

for (var i = 0; i < names.length; i++) {

alert(names[i]);

}

l 無需預先制定大小,動態。

練習

l 求一個數組中的最大值。定義成函數。

function getMax(arr) {

var max = arr[0];

for (var i = 0; i < arr.length; i++) {

if (arr[i] > max) {

max=arr[i];

}

}

return max;

}

var arr1 = new Array();

arr1[0] = 10;

arr1[1] = 100;

arr1[2] = 30;

arr1[3] = 50;

arr1[4] = 8;

alert(getMax(arr1));

l 將一個字符串數組輸出為|分割的形式,比如“梅西|卡卡|鄭大世”

。不要使用JavaScript中的Join函數。arr1.join("|")將數組用分隔

符連接成一個字符串。

function myjoin(arr) {

if (arr.length <= 0) {

return "";

}

var s = arr[0];

for (var i = 1; i < arr.length; i++) {

s=s+"|"+arr[i];

}

return s;

}

var arr = new Array();

arr[0] = "tom";

arr[1] = "jerry";

arr[2] = "lily";

alert(myjoin(arr));

l 將一個字符串數組的元素的順序進行反轉。{"3","a","8","haha"}

{"haha","8","a","3"}。不要使用JavaScript中的反轉函數。提示:

第i個和第length-i-1個進行交換。定義成函數。Myreverse

function myreverse(arr) {

for (var i = 0; i < arr.length / 2; i++) {

var temp;

temp = arr[i];

arr[i] = arr[arr.length - i - 1];

arr[arr.length - i - 1] = temp;

}

}

var arr = new Array();

arr[0] = "tom";

arr[1] = "jerry";

arr[2] = "lily";

alert(myjoin(arr));

myreverse(arr);

alert(arr);

l 交換兩個變量,數組同樣是傳遞引用,js出錯很麻煩。

JS中的Dictionary

l JS中的Array是一個寶貝,不僅是一個數組,還是一個Dictionary

,還是一個Stack。

var pinyins = new Array();

pinyins["人"] = "ren";

pinyins["口"] = "kou";

pinyins["手"] = "shou";

alert(pinyins["人"]);

alert(pinyins.人);

var diec = new Array();

diec["人"] = "ren";

diec["口"] = "kou";

diec["手"] = "shou";

alert(diec["口"]);

alert(diec.口);

var diec = new Array();

diec["人"] = "ren";

diec["口"] = "kou";

diec["手"] = "shou";

// alert(diec["口"]);

// alert(diec.口);

for (var k in diec) {

alert(k);

}

遍歷出的為key

var arr = new Array();

arr[0] = "tom";

arr[1] = "jerry";

arr[2] = "lily";

for (var a in arr) {

alert(a);

}

結果為0,1,2

l 像Hashtable、Dictionary那樣用,而且像它們一樣效率高。

l 課下練習:網頁版的火星文翻譯。

Array的簡化聲明

l Array還可以有簡化的創建方式

? var arr = [3, 5, 6, 8, 9]; 普通數組初始化

? 這種數組可以看做是pinyins["人"] = "ren";的特例,也就是key為0、1

、2……

l 字典風格的簡化創建方式:

? var arr = {"tom":30,"jim":20};

var arr3 = { "tom": 30, "jim": 20 };

alert(arr3["jim"]);

輸出為:20

數組、for及其他

l 對于數組風格的Array來說,可以使用join方法拼接為字符串

var arr = ["tom","jim","lily"];

alert(arr.join(","));//JS中join是array的方法,不像.Net中是string的方法

for循環可以像C#中的foreach一樣用

l for循環還可以獲得一個對象所有的成員,類似于.Net中的反射

for (var e in document) {

alert(e);

}因為對象的成員就是以對象的key的形式出現的

var p1 = new Object();

p1.Name = "tom";

p1.Age = 30;

p1.SayHello = function () { alert("hello"); };

p1.SayHello();

for (var s in p1) {

alert(s);

}

有了它沒有文檔也可以進行開發。

擴展方法(*)

l 通過類對象的prototype設置擴展方法,下面為String對象增加

quote(兩邊加字符)方法

l String.prototype.quote = function(quotestr) {

l if (!quotestr) {

l quotestr = "\"";

l }

l return quotestr + this + quotestr;

l };

l alert("abc".quote()); alert("abc".quote("|"));

l 擴展方法的聲明要在使用擴展方法之前執行。JS的函數沒有專門

的函數默認值的語法,但是可以不給參數傳值,不傳值的參數值

就是undefined,自己做判斷來給默認值。

轉載于:https://www.cnblogs.com/seclusively/p/3789455.html

總結

以上是生活随笔為你收集整理的跟着杨中科学习asp.net之javascript的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。