中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JavaScript框架從入門到精通

文章目錄

    • 靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁
      • 動態(tài)網(wǎng)頁
      • 網(wǎng)頁是如何和后端交互的呢?
    • JS概述
      • 什么是JS
      • 名詞解釋
      • 特點和優(yōu)勢
      • 入門案例
    • HTML中引入JS
      • 通過script標簽引入JS代碼
      • 通過script標簽引入外部的JS文件
    • JS語法
      • 注釋
      • 基本數(shù)據(jù)類型
      • 復雜數(shù)據(jù)類型
      • JS的變量
      • JS的運算符
    • JS語句
      • if..else語句
      • switch…case語句
      • 循環(huán)語句
    • JS數(shù)組
      • JS數(shù)組的聲明方式
      • 數(shù)組需要注意的細節(jié)
      • 數(shù)組的常見操作
    • JS函數(shù)
      • 方式一:通過function關(guān)鍵字聲明函數(shù)
      • 方式二:通過函數(shù)直接量聲明函數(shù)
    • JS對象
      • 內(nèi)置對象
      • 自定義對象
    • DOM樹的作用
      • 組成
      • DOM樹結(jié)構(gòu)
      • Document對象
      • dom.html
      • 總結(jié)
    • json
      • 概念
      • 作用
      • 語法
      • 轉(zhuǎn)換工具
      • 測試
    • ajax
      • 概述
      • 原理
      • 核心對象XMLHttpRequest
      • 測試
    • console調(diào)試網(wǎng)頁
      • Chrome
      • log
      • warn
      • table

靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁

動態(tài)網(wǎng)頁

我們有了html超文本標記語言實現(xiàn)了網(wǎng)站頁面展現(xiàn),展現(xiàn)文字、表格、圖片、超鏈接等,有了css樣式表實現(xiàn)了頁面的美化,這些技術(shù)實現(xiàn)了靜態(tài)網(wǎng)頁。

日常展現(xiàn)是已經(jīng)足夠了,但是如果我們要做個注冊功能呢?如論壇,我們注冊個論壇來發(fā)文章,聊天。這就帶來一個問題,信息如何根據(jù)不同的使用者,展現(xiàn)不同的內(nèi)容呢?再如我注冊登錄和你注冊登錄,我們在網(wǎng)站上顯示的登錄名稱就不同。這html+css就無能為力了,它們無法實現(xiàn),那誰能辦到呢?這時javascript就派上用場了。它能實現(xiàn)瀏覽器用戶和后臺服務(wù)器進行交互。注冊、登錄、添加商品到購物車、下訂單對它而言都是小菜一碟。有了javascript的加入,實現(xiàn)頁面和后臺系統(tǒng)的交互,實現(xiàn)用戶信息的注冊,實現(xiàn)用戶的登錄,實現(xiàn)個性化的數(shù)據(jù)展現(xiàn),功能強大不老少。業(yè)界把這樣的網(wǎng)頁稱為動態(tài)網(wǎng)頁,把這樣的網(wǎng)站稱為動態(tài)網(wǎng)站。

簡而言之,靜態(tài)網(wǎng)站只能看,不同瀏覽者看到內(nèi)容一致不能變化;動態(tài)網(wǎng)站可以讀寫數(shù)據(jù),內(nèi)容根據(jù)不同瀏覽者展示不同的信息。

網(wǎng)頁是如何和后端交互的呢?

動態(tài)網(wǎng)站的軟件架構(gòu)是怎樣的呢?

用戶訪問頁面,頁面觸發(fā)事件創(chuàng)建XHR對象,進行ajax請求,請求訪問服務(wù)器端,請求被web中間件攔截并進行處理,由控制層框架springmvc中的controller進行接收,controller請求業(yè)務(wù)層spring框架的service服務(wù),service請求持久層mybatis框架的mapper映射,mapper訪問數(shù)據(jù)庫。操作完數(shù)據(jù)庫,返回結(jié)果,mybatis封裝成java對象傳回service,service把java對象傳回controller,controller把java對象又轉(zhuǎn)換為json字符串,然后傳回瀏覽器,瀏覽器傳回給調(diào)用者XHR,XHR調(diào)用回調(diào)方法callback,callback進行json字符串的解析,從中拿到要展現(xiàn)的數(shù)據(jù),通過javascript處理,最終回顯到頁面上。

可以看到這個調(diào)用過程是非常復雜的,跨越網(wǎng)絡(luò),跨域多個服務(wù)器,很多技術(shù)應(yīng)用其中,而這一切的始作俑者是誰呢?誰讓這一切成為可能,它就是javascript,它實現(xiàn)了用戶的請求和響應(yīng),實現(xiàn)了數(shù)據(jù)的動態(tài)展現(xiàn),使早期靜態(tài)的網(wǎng)站走向了動態(tài)的網(wǎng)站。

JS概述

什么是JS

JavaScript 是 web 前端開發(fā)者必學的三種語言之一:

  • HTML 定義網(wǎng)頁的內(nèi)容 H5
  • CSS 規(guī)定網(wǎng)頁的布局 CSS3
  • JavaScript 實現(xiàn)網(wǎng)站的交互 ES6

JavaScript在1995年由Netscape公司的Brendan Eich,在網(wǎng)景導航者瀏覽器上首次設(shè)計實現(xiàn)而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它們根本沒有關(guān)系,java是強語言幾乎無所不能,而javascript是腳本語言,只局限于瀏覽器。

JavaScript遵循ECMA國際組織頒布的ECMAScript標準。截至 2012 年,所有瀏覽器都完整的支持ECMAScript 5.1,舊版本的瀏覽器至少支持ECMAScript 3 標準。2015年6月17日,ECMA國際組織發(fā)布了ECMAScript 的第六版,簡稱為ES6。它的目標是使得JavaScript語言可以用來編寫復雜的大型應(yīng)用程序,成為企業(yè)級開發(fā)語言。很多js相關(guān)技術(shù)都遵循這個標準,如目前最受歡迎的Vue。

微軟出了符合規(guī)范類似javascript的稱為js,但一般開發(fā)者忽略它們的差異,全稱就習慣叫javascript,簡稱就習慣叫js。

全稱JavaScript,是一種弱類型語言,同其他語言一樣,有它自身的語法,數(shù)據(jù)類型,表達式,算術(shù)運算符等。

JS是一門 基于對象事件驅(qū)動腳本語言 ,通常用來提高網(wǎng)頁與用戶的交互性。

名詞解釋

基于對象:它不僅可以創(chuàng)建對象,也能使用現(xiàn)有的對象。JS沒有類的概念,也沒有編譯的過程。是一邊解釋一邊執(zhí)行。

事件驅(qū)動:在JS中,大部分情況下都是通過事件觸發(fā)驅(qū)動函數(shù)執(zhí)行的,從而實現(xiàn)特定的功能。(比如點擊div將內(nèi)容替換為時間、當鼠標滑過元素,元素就有翻轉(zhuǎn)的動態(tài)。)

腳本語言:在網(wǎng)絡(luò)前端開發(fā)環(huán)境下,用于嵌入在客戶端瀏覽器中的一段小程序。

特點和優(yōu)勢

特點:

(1)JS是一門直譯式的語言,直接執(zhí)行的就是源代碼.

是一邊解釋一邊執(zhí)行,沒有編譯的過程(不像Java需要提前編譯為class文件再運行).

(2)JS是一門弱類型的語言,沒有嚴格的數(shù)據(jù)類型.

優(yōu)勢:

(1)良好的交互性

(2)一定的安全性(JS被強制的要求,不能訪問瀏覽器以外的東西,只能訪問瀏覽器和瀏覽器內(nèi)部的資源)

(3)跨平臺性(Java語言具有跨平臺性,是因為有虛擬機)

只要有瀏覽器的地方都能執(zhí)行JS

入門案例

<head>
    <title>hello</title>
	<meta charset='utf-8'/>
	<script>/* JS代碼 */
alert(100);
		function fn(){
			alert('111');
		}
	</script>
</head>
<body>
	<a href='#' onclick='fn();'>鼠標點擊事件...</a>
</body>

HTML中引入JS

通過script標簽引入JS代碼

<head>
	<meta charset='utf-8'/>
	<script>/* JS代碼 */
		function fn(){
			alert('JS的第1種引入方式');
		}
	</script>
</head>
<body>
	<div id='div1' onclick='fn();'>Hello JavaScript</div>
</body>

通過script標簽引入外部的JS文件

創(chuàng)建1.js文件

function fn(){
	alert('JS的第2種引入方式');
}

在html中引入文件

<head>
	<meta charset='utf-8'/>
	<script src='1.js'> </script>
</head>
<body>
	<div id='div1' onclick='fn();'>Hello JavaScript</div>
</body>

注意:不要同時通過一個script標簽引入JS代碼和JS文件,會導致代碼不會執(zhí)行!比如:

<script src='demo1.js'>
	alert('哈哈哈哈。。。');//代碼不會執(zhí)行??!
</script>

JS語法

注釋

單行注釋: //注釋內(nèi)容

多行注釋: /* 注釋內(nèi)容 */

基本數(shù)據(jù)類型

包括:number/string/boolean/null/undefined

(1) 數(shù)值類型-number

在JS中,數(shù)值類型只有一種,就是浮點型。

在JS中,需要時會自動的進行數(shù)據(jù)類型的轉(zhuǎn)換,比如:在顯示和處理的時候,浮點型和整型會自動的轉(zhuǎn)換。

2.4+3.6=6;

Infinity : 正無窮大

-Infinity : 負無窮大

NaN : Not a Number 非數(shù)字, 和任何值都不相等,包括它本身

(2) 字符串類型-string

在JS中,字符串是基本數(shù)據(jù)類型。

在JS中,字符串直接量是通過單引號或者雙引號引起來。


var str1 = 'Hello…';

var str2 = 'CGB2103…';;

alert(str1);

(3) 布爾類型-boolean

值為true或者是false;

var s1 = false;

console.log(s1);

(4) undefined

值只有一個就是undefined。表示變量沒有初始化值。

比如:

a) var num; alert(num);//聲明了變量但是沒有為變量賦值,該變量的值就是undefined。

b) 或者訪問一個對象上不存在的屬性時,也是undefined。

c) 或者訪問數(shù)組中一個沒有的元素的位置時,該位置處的值也是undefined.

(5) null

值也只有一個,就是null。表示空值或者不存在的對象。

復雜數(shù)據(jù)類型

函數(shù)、數(shù)組、對象(自定義對象、內(nèi)置對象、DOM對象、BOM對象…)

JS的變量

js是弱類型語言,所有類型的變量都是用var關(guān)鍵字定義。并且參數(shù)的類型可以隨時轉(zhuǎn)換。

javascript沒有類似采用靜態(tài)語言類型,如java的變量類型是編譯期就確定的;而它采用了動態(tài)類型,也就是說在編譯期類型不確定,運行時會動態(tài)根據(jù)變量的賦值來決定它的類型,這點比較靈活。這也是雙刃劍,編譯期就難以檢查出其賦值的錯誤。

練習:變量交換

(1) 在JS中是通過 var 關(guān)鍵字來聲明一個變量

var a=1; alert(a);

var x=true; alert(x);

var y=10.8; alert(y);

(2) 在JS中聲明的變量是不區(qū)分類型的, 可以指向任意的數(shù)據(jù)類型。

var a = 1;
a=true;
a=100;
alert(a);//100

function x(){
	var m = 10;
	alert('局部變量:'+m);
	alert('全局變量:'+a);
}
alert('局部變量2:'+m);//局部變量失效,報錯

JS的運算符

JS中的運算符和Java中的運算符大致相同

算術(shù)運算符: +,-,*,/,%,++,–

賦值運算符: =,+=,-=,*=,/=,%=

比較運算符: ==,!=, =,!, > ,< ,>=,<=

位運算符: & , |

邏輯運算符: &&,||

前置邏輯運算符: ! (not)

三元運算符: ? :

常見運算符測試

var a = 3;
var b = 1;
console.log(a+b);//4
a+=4;
console.log(a+b);//8
//a+=4;
console.log(a==b); //true
console.log(a==='3'); //false  如果兩邊比較的值不是同一種數(shù)據(jù)類型,===直接返回false,如果是同一種數(shù)據(jù)類型,==和===沒有區(qū)別!
console.log('1'=='1'); //true   //由于JS中字符串是基本數(shù)據(jù)類型,比較字符串相等通過 == 進行!
var a = 1;
alert(a++);//1
alert(++a);//3
alert(++a+a+++a);//4+4+5
alert(a>3?10:8);
var b = 10;
alert(a>b?a:b);//求兩個數(shù)里的大數(shù)
var c = 8;
var d = a>b?(a>c?a:c):(b>c?b:c);
alert(d);//三個數(shù)里的大值

typeof運算符: 用于返回變量或者表達式 的數(shù)據(jù)類型

var i = 3;
console.log(typeof i);//number
i=true;
console.log(typeof i);//boolean
i='hello';
console.log(typeof i);//string
console.log(typeof 123+'abc');//numberabc
console.log(typeof (123+'abc'));//string

JS語句

JS中的語句和Java中的語句用法也大致相同

if…else語句

var i = 3;
if(i==4){
alert(“yes”);
}else{
alert(“no”);//no
}
例子: 接收用戶輸入的成績,判斷成績所屬的等級
80~100(包括80,也包括100)		優(yōu)秀 
60~80(包括60,但不包括80)		中等
0~60(包括0,但不包括60)		不及格
其他值							輸入有誤
// prompt函數(shù)可以彈框提示用戶輸入成績, 并返回用戶輸入的內(nèi)容
var score = prompt('請輸入您的成績:');
console.log( score );
if( score >= 80 && score <=100 ){
	alert('您的成績屬于:優(yōu)秀!');
}else if( score >= 60 && score < 80 ){
	alert('您的成績屬于:中等!');
}else if( score >= 0 && score < 60 ){
	alert('您的成績屬于:不及格!');
}else{
	alert('您輸入的成績不合法,請重新輸入!');
}

switch…case語句

var day = 3;
switch( day ){
	case 1: 
		alert('今天是星期一');
		break;
	case 2: 
		alert('今天是星期二');
		break;
	case 3: 
		alert('今天是星期三');
		break;
	case 4: 
		alert('今天是星期四');
		break;
	case 5: 
		alert('今天是星期五');
		break;
}

循環(huán)語句

for(var i=0;i<5;i++){
	alert( i );
console.log(i);
}
var i=0;
while(i<5){
alert(i);
i++;
}
var sum = 0;
for( var i=1; i<=100; i++ ){
	sum += i; //sum = sum+i;
}
console.log(sum );
//沒有增強for循環(huán)

注意: JS中的語句,判斷條件可以不是boolean類型,因為JS中會自動進行數(shù)據(jù)類型的轉(zhuǎn)換。

JS數(shù)組

JS數(shù)組用于在單個的變量中存儲多個值(其實就是一個容器)。

JS中的數(shù)組可以存儲例如:數(shù)值、字符串、布爾值、undefined、null、對象、函數(shù)等

JS數(shù)組的聲明方式

var arr1 = new Array();//聲明一個空數(shù)組
var arr2 = new Array('abc', 'hello', true);//聲明一個具有初始值的數(shù)組
alert(arr2.length);//3
var arr4 = [];//聲明一個空數(shù)組
alert(arr4.length);//0
arr4 = ['abc', 'hello', true];//聲明一個具有初始值的數(shù)組
alert(arr4);

數(shù)組需要注意的細節(jié)

(1)JS數(shù)組中可以存放任意的數(shù)據(jù)類型

(2)JS中的數(shù)組長度可以被改變

var arr1 = [];//聲明一個空數(shù)組
console.log( arr1.length ); //此時數(shù)組長度為 0
arr1.length = 10;
console.log( arr1.length ); //此時數(shù)組長度為 10
arr1[99] = 'abc';
console.log( arr1.length ); //此時數(shù)組長度為 100
arr1.length = 0;
console.log( arr1.length ); //此時數(shù)組長度為 0

數(shù)組的常見操作

length屬性  --  獲取數(shù)組的長度,還可以改變數(shù)組的長度
var a = [1,2,3];  
alert(a.length);  

var arr = [123, 'abc', false, new Object() ]
//遍歷數(shù)組
for( var i=0; i< arr.length; i++ ){
	console.log( arr[i] ); 
}
//for..in
for(var i in a){
	console.log('i:::'+i);
}
//循環(huán)接收用戶輸入,將數(shù)據(jù)存儲在數(shù)組中,直至輸入'exit’結(jié)束
c();
function c(){
	var a=[];
	for(;;){
		var x=prompt('請輸入整數(shù):');
		a[a.length]=x; 
		if(x=='exit'){
			break;
		}
	}
	console.log(a);
}

JS函數(shù)

函數(shù)就是一個具有功能的代碼塊, 可以反復調(diào)用

函數(shù)就是包裹在花括號中的代碼塊,前面使用了關(guān)鍵詞 function

方式一:通過function關(guān)鍵字聲明函數(shù)

聲明:function 函數(shù)名稱([參數(shù)列表]){ 函數(shù)體 }
調(diào)用: 函數(shù)名稱([參數(shù)列表]);
案例:
function a(){ //無參函數(shù)定義
	var a = [1,2,3,4,5]; //定義數(shù)組
	var sum =0; //定義變量
	for (var i = 0; i <a.length; i++) {
		if(a[i]%2==0){
			sum+=a[i];
		}
	}
	alert(sum);
}
a();//函數(shù)調(diào)用
function b(x,y){//定義含參函數(shù)
	alert(x+y);
}
b(1,'2');//函數(shù)調(diào)用
b(1,2);//函數(shù)調(diào)用

方式二:通過函數(shù)直接量聲明函數(shù)

聲明:var 函數(shù)名稱 = function([參數(shù)列表]){ 函數(shù)體 }
調(diào)用: 函數(shù)名稱([參數(shù)列表]);
案例:
// fn2();  //這種方式定義的函數(shù)還未加載就調(diào)用,會報錯.方式1沒問題
var fn2 = function(){ //定義無參函數(shù)
	alert(100);
}
fn2();  //函數(shù)調(diào)用

var fn3 = function(x,y){  //定義含參函數(shù)
	alert(x*y);
}
fn3(0.32,100);//函數(shù)調(diào)用
fn2('王海濤');參數(shù)個數(shù)不匹配,王海濤undefined
var e = function(x,y){ //定義有返回值含參函數(shù)
	return x-y;
}
alert('函數(shù)返回值:::'+ e(1.1,10.9) ); //函數(shù)調(diào)用

注意: 在JS中調(diào)用函數(shù)時, 傳遞的參數(shù)個數(shù)如果與聲明的參數(shù)個數(shù)不相同, 也不會報錯。

但是最好按聲明的個數(shù)來傳遞, 因為個數(shù)不符, 可能會引發(fā)一些問題?。?!

JS對象

利用function關(guān)鍵字聲明對象,用new關(guān)鍵字創(chuàng)建對象。

內(nèi)置對象

String/Array/Number/Math/JSON…

Window對象–代表瀏覽器中一個打開的窗口,了解一下即可,很多被UI替代

//String對象的功能
let a = 'javascript';
console.log( a.length ); //獲取字符串的長度
console.log( a.toUpperCase() ); //全轉(zhuǎn)大寫
let b = a.substring(1,5); //截取字符串[1,5)
console.log( b ); 
console.log( a.concat('hello ~') );  //拼串
//Math對象
console.log( Math.PI );//π的值
console.log( Math.random() ); //隨機數(shù)0~1
console.log( Math.random() * 10 );
console.log( Math.round(1.9) );//對小數(shù)的處理,round四舍五入
console.log( Math.round(1.1) );//對小數(shù)的處理,round四舍五入
//Array對象
let c = [3,21,4,5,2];
console.log( c );
console.log( c.toString() );//打印數(shù)組里的數(shù)據(jù)
console.log( c.sort() ); //對數(shù)組排序
//window對象--可以省略
window.alert(100);//彈出框
window.prompt(); //輸入框
window.confirm() ;//確認框

Document對象–代表整個HTML文檔,可用來訪問頁面中的所有元素

document.write()               	動態(tài)向頁面寫入內(nèi)容
document.getElementById(id)  		獲得指定id值的元素
document.getElementsByName(name)	獲得指定Name值的元素

學會簡單使用,后期被jQuery封裝,在后期被Vue框架封裝

自定義對象

(1)方式一:

  1. 聲明對象:function Person(){}
  2. 創(chuàng)建對象:var p1 = new Person();
  3. 設(shè)置屬性:p1.name = '張飛'; p1.age = 18;
  4. 設(shè)置方法:p1.run = function(){ alert(this.name+' : '+this.age); }
  5. 訪問p1對象:
/* 自定義對象*/
function Person(){ } /* 定義對象*/ 
var p1 = new Person(); /* 創(chuàng)建對象*/
p1.name='張三';
p1.age=20;
console.log(p1);  
p1.say = function(){ /* 定義函數(shù)*/
console.log('haha');
}
p1.say(); /* 函數(shù)調(diào)用*/
上面展示了js的強大!js的牛掰之處就在于,它的屬性可以邊寫邊創(chuàng)建,非常靈活,而java不行,必須先定義。

上面展示了js的強大!js的牛掰之處就在于,它的屬性可以邊寫邊創(chuàng)建,非常靈活,而java不行,必須先定義。

(2)方式二:

var p2 = {
		'pname':'李四',
		'page':100,
		'psay':function(){
			/* this使用p2里定義的 */
			console.log(this.pname+this.page);
		}
	}
	console.log(p2);
	p2.psay();  /* 函數(shù)調(diào)用*/

DOM樹的作用

組成

  • ECMAScript描述了javascript語言的語法和基本對象
  • 文檔對象模型DOM(Document Object Model)與HTML網(wǎng)頁API接口
  • 瀏覽器對象模型BOM(Browser Object Model),與瀏覽器進行交互的API接口

核心對象有:window瀏覽器窗口,navigator瀏覽器信息,location瀏覽器當前地址信息,history瀏覽器歷史信息,screen用戶屏幕信息。

DOM非常重要,實際開發(fā)更多通過js操作DOM對象實現(xiàn)對html頁面的操作,BOM也用,比較少用。所以學習重點放在DOM上。

DOM樹結(jié)構(gòu)

DOM 是一項 W3C (World Wide Web Consortium) 標準,DOM(Document Object Model)文檔對象模型為JS操作html文檔所提供的一套API,通過這套API可以很方便的對html元素進行訪問及增刪改查操作。

Document對象

--獲取對象: window.document
--調(diào)用方法: 
		getElementById('元素的id的屬性的值')--返回1個元素
		getElementsByName('元素的name屬性的值')--返回多個元素(用數(shù)組)
		getElementsByClassName('元素的class屬性的值')--返回多個元素(用數(shù)組)
		getElementsByTagName('元素的標簽名的值')--返回多個元素(用數(shù)組)
write()--向文檔寫 HTML 表達式 或 JavaScript 代碼
title--返回網(wǎng)頁的標題
id--設(shè)置或返回元素的id
innerHTML--設(shè)置或返回元素的內(nèi)容

dom.html

<!DOCTYPE html>
<html>
	<head>
		<meta charset='utf-8'>
		<title>DOM解析</title>

		<!-- js -->
		<script>
			function a(){
				/* 按id獲取,返回1個 */
				var x = document.getElementById('div1');
				x.innerHTML='<h1>你好div</h1>';
				
				/* 按name屬性值獲取,返回多個*/
				var y = document.getElementsByName('div2'); 
				console.log(y);//NodeList
				y[0].innerHTML='hello js...';
				
				/* 按class屬性值獲取,返回多個*/
				var z = document.getElementsByClassName('span1');
				console.log(z);//HTMLCollection
				z[0].innerText='<p>我變了</p>'
				
				/* 按照標簽名獲取,返回多個 */
				var m = document.getElementsByTagName('div');
				console.log(m);//HTMLCollection
				m[1].style.fontSize=30+'px';
			}
		</script>
	</head>
	<body>
		<div id='div1' onclick='a();'>我是div1</div>
		<div name='div2'  onclick='a();'>我是div2</div>
		<span class='span1'>我是span1</span>
		<span class='span1'>我是span2</span>
		<a name='div2' id='a1'>我是a</a>

		<!-- js事件: -->
<a href='#' onclick='method();'>單擊觸發(fā)js</a>
		<a href='#' ondblclick='method2();'>雙擊觸發(fā)js</a>
		<a href='#' onmouseenter='method3();'>滑過觸發(fā)js</a>
		<a href='#' onmouseleave='method4();'>滑走觸發(fā)js</a>
<button onkeydown='alert(1);'>點我</button>
	</body>
</html>

總結(jié)

獲取頁面元素的4種方式:

  • getElementsByTagName 標簽名稱,得到數(shù)組
  • getElementsByName name屬性,得到數(shù)組
  • getElementsByClassName class屬性,得到數(shù)組
  • getElementById id屬性,單個值

注:dom樹在描述標簽時除id方式,其它都是以數(shù)組形式體現(xiàn),哪怕是一個元素。

json

概念

ajax往往要完整應(yīng)用還會配合一個技術(shù):JSON,那什么是JSON呢?

JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation)

JSON(JavaScript Object Notation,JS 對象簡譜) 起名不咋地,非常拗口,我們就記住它是一種輕量級的數(shù)據(jù)交換格式即可。它基于 ECMAScript (js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。是xml的終結(jié)者,成為主流開發(fā)方式(ajax異步請求,json返回)。

作用

JSON 是存儲和交換文本信息的語法。當數(shù)據(jù)在瀏覽器與服務(wù)器之間進行交換時,這些數(shù)據(jù)只能是文本。JSON 屬于文本,并且我們能夠把任何 JavaScript 對象轉(zhuǎn)換為 JSON,然后將 JSON 發(fā)送到服務(wù)器。我們也能把從服務(wù)器接收到的任何 JSON 轉(zhuǎn)換為 JavaScript 對象。以這樣的方式,我們能夠把數(shù)據(jù)作為 JavaScript 對象來處理,無需復雜的解析和轉(zhuǎn)譯。

語法

JSON數(shù)據(jù):

var a =' 'firstName' : 'John' ' 

JSON 對象:

var a = '{ 'firstName':'John' , 'lastName':'Doe' }'

JSON 數(shù)組:

var a = '[{ 'firstName':'Bill' , 'lastName':'Gates' },{ 'firstName':'George' , 'lastName':'Bush' }]';

轉(zhuǎn)換工具

使用JS里的內(nèi)置對象JSON.用來把以 JSON 格式寫的字符串 和 原生 JavaScript 對象互轉(zhuǎn).

給服務(wù)器發(fā)送數(shù)據(jù):JS對象轉(zhuǎn)成JSON字符串 	JSON.stringify(Js對象)
接受服務(wù)器的數(shù)據(jù): JSON字符串轉(zhuǎn)成JS對象		JSON.parse('json字符串')

測試

<!DOCTYPE html>
<html>
	<head>
		<meta charset='utf-8'>
		<title>json</title>
		<script>
			//json用來在瀏覽器和服務(wù)器之間做數(shù)據(jù)傳輸,輕量級,格式簡單明了.
			//JSON是js的內(nèi)置對象,用來把json類型的字符串和js對象互轉(zhuǎn)
			//json類型的字符串---{ 'k1':'v1', 'k2':'v2', 'k3':'v3' }
			function jschuan(){
				var jsonchuan = '{ 'k1':'v1', 'k2':'v2', 'k3':'v3' }';
				document.getElementById('h').innerHTML=jsonchuan;
			}
			function chuan2js(){
				var text='{ 'k1':'v1', 'k2':'v2', 'k3':'v3' }';
				console.log(text);
		//從服務(wù)器收到的數(shù)據(jù)都是字符串,轉(zhuǎn)成js對象,用js語法解析屬性/方法
	var jsobj = JSON.parse(text);//串轉(zhuǎn)js對象,就可以寫js代碼解析數(shù)據(jù)
				console.log(jsobj);
				document.getElementById('d').innerHTML=jsobj.k2;
			}
			function js2chuan(){
				var obj = {'k1':'v1', 'k2':'v2', 'k3':'v3'};
				console.log(obj);
				//把瀏覽器的數(shù)據(jù)發(fā)給服務(wù)器,服務(wù)器只要json串
				var text = JSON.stringify(obj);//js對象轉(zhuǎn)成串
				document.getElementById('p1').innerHTML=text;
				console.log(text);
				console.log(text.length);
			}
		</script>
	</head>
	<body>
		<p id='p1' onclick='js2chuan();'>我是p</p>
		<div id='d' onclick='chuan2js();'>我是div</div>
		<h1 id='h' onclick='jschuan();'>我是h1哦</h1>
	</body>
</html>

ajax

概述

AJAX = Asynchronous JavaScript And XML. AJAX 并非編程語言。
Ajax 允許通過與場景后面的 Web 服務(wù)器交換數(shù)據(jù)來異步更新網(wǎng)頁。這意味著可以更新網(wǎng)頁的部分,而不需要重新加載整個頁面。

原理

核心對象XMLHttpRequest

所有現(xiàn)代瀏覽器都支持 XMLHttpRequest 對象。
XMLHttpRequest 對象用于同幕后服務(wù)器交換數(shù)據(jù)。這意味著可以更新網(wǎng)頁的部分,而不需要重新加載整個頁面。


測試


<!DOCTYPE html>
<html>
	<head>
		<meta charset='utf-8'>
		<title>ajax-js版</title>
		<script>
			function change(){
				// 1. 創(chuàng)建xhr對象,用于同幕后服務(wù)器交換數(shù)據(jù)
				var xhr = new XMLHttpRequest();
				// 2. 定義當 readyState 屬性發(fā)生變化時被調(diào)用的函數(shù)
				xhr.onreadystatechange=function(){
					//3. status是200表示請求成功,readyState是4表示請求已完成且響應(yīng)已就緒
					if(this.status==200 && this.readyState==4){
						// document.getElementById('d1').innerHTML='hi ajax';
						//5.以字符串返回響應(yīng)數(shù)據(jù),并展示
						document.getElementById('d1').innerHTML=this.responseText;
					}
				}
				//3.規(guī)定請求的類型(請求方式,文件位置,異步)
				xhr.open('get','1.json',true);
				//xhr.open('get','http://localhost:8080/car/get',true);
				//4.xhr將請求發(fā)送到服務(wù)器
				xhr.send();
			}
		</script>
	</head>
	<body>
		<!-- 點擊時,使用ajax修改文字 -->
		<div id='d1' onclick='change()'>你好</div>
	</body>
</html>

console調(diào)試網(wǎng)頁

Chrome

專業(yè)人用專業(yè)的工具,瀏覽器調(diào)試谷歌、火狐最佳,使用F12打開調(diào)試窗口。也可以快捷鍵打開:ctrl+shift+i。

  • 支持自動補全,提示下,按tab鍵補全
  • 清除日志
  • Console控制臺菜單

log

warn

table

以表格形式展現(xiàn):

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JavaScript學習
JSON的自定義序列化和解析
JavaScript基礎(chǔ)學習目錄
12個常規(guī)前端面試題及小結(jié)
json數(shù)據(jù)在前端(javascript)和后端(php)轉(zhuǎn)換
JavaScript基本語法(全)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服