主頁 > 前端設計 > 小白入門之前端網頁技術JavaScript

小白入門之前端網頁技術JavaScript

2021-08-06 07:55:44 前端設計

文章目錄

    • 靜態網頁和動態網頁
      • 動態網頁
      • 網頁是如何和后端互動的呢?
    • JS概述
      • 什么是JS
      • 名詞解釋
      • 特點和優勢
      • 入門案例
    • HTML中引入JS
      • 通過script標簽引入JS代碼
      • 通過script標簽引入外部的JS檔案
    • JS語法
      • 注釋
      • 基本資料型別
      • 復雜資料型別
      • JS的變數
      • JS的運算子
    • JS陳述句
      • if..else陳述句
      • switch…case陳述句
      • 回圈陳述句
    • JS陣列
      • JS陣列的宣告方式
      • 陣列需要注意的細節
      • 陣列的常見操作
    • JS函式
      • 方式一:通過function關鍵字宣告函式
      • 方式二:通過函式直接量宣告函式
    • JS物件
      • 內置物件
      • 自定義物件
    • DOM樹的作用
      • 組成
      • DOM樹結構
      • Document物件
      • dom.html
      • 總結
    • json
      • 概念
      • 作用
      • 語法
      • 轉換工具
      • 測驗
    • ajax
      • 概述
      • 原理
      • 核心物件XMLHttpRequest
      • 測驗
    • console除錯網頁
      • Chrome
      • log
      • warn
      • table

靜態網頁和動態網頁

動態網頁

我們有了html超文本標記語言實作了網站頁面展現,展現文字、表格、圖片、超鏈接等,有了css樣式表實作了頁面的美化,這些技術實作了靜態網頁,

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8GoCFcXD-1622526184986)(RackMultipart20210601-4-1vdjb36_html_683b0f623d6265f.png)]

簡而言之,靜態網站只能看,不同瀏覽者看到內容一致不能變化;動態網站可以讀寫資料,內容根據不同瀏覽者展示不同的資訊,

網頁是如何和后端互動的呢?

動態網站的軟體架構是怎樣的呢?

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-br6P2qaO-1622526184994)(RackMultipart20210601-4-1vdjb36_html_a71a298b5faabd1f.png)]

用戶訪問頁面,頁面觸發事件創建XHR物件,進行ajax請求,請求訪問服務器端,請求被web中間件攔截并進行處理,由控制層框架springmvc中的controller進行接收,controller請求業務層spring框架的service服務,service請求持久層mybatis框架的mapper映射,mapper訪問資料庫,操作完資料庫,回傳結果,mybatis封裝成java物件傳回service,service把java物件傳回controller,controller把java物件又轉換為json字串,然后傳回瀏覽器,瀏覽器傳回給呼叫者XHR,XHR呼叫回呼方法callback,callback進行json字串的決議,從中拿到要展現的資料,通過javascript處理,最侄訓顯到頁面上,

可以看到這個呼叫程序是非常復雜的,跨越網路,跨域多個服務器,很多技術應用其中,而這一切的始作俑者是誰呢?誰讓這一切成為可能,它就是javascript,它實作了用戶的請求和回應,實作了資料的動態展現,使早期靜態的網站走向了動態的網站,

JS概述

什么是JS

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

  • HTML 定義網頁的內容 H5
  • CSS 規定網頁的布局 CSS3
  • JavaScript 實作網站的互動 ES6

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

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

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

全稱JavaScript,是一種弱型別語言,同其他語言一樣,有它自身的語法,資料型別,運算式,算術運算子等,

JS是一門 基于物件事件驅動腳本語言 ,通常用來提高網頁與用戶的互動性,

名詞解釋

基于物件:它不僅可以創建物件,也能使用現有的物件,JS沒有類的概念,也沒有編譯的程序,是一邊解釋一邊執行,

事件驅動:在JS中,大部分情況下都是通過事件觸發驅動函式執行的,從而實作特定的功能,(比如點擊div將內容替換為時間、當滑鼠滑過元素,元素就有翻轉的動態,)

腳本語言:在網路前端開發環境下,用于嵌入在客戶端瀏覽器中的一段小程式,

特點和優勢

特點:

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

是一邊解釋一邊執行,沒有編譯的程序(不像Java需要提前編譯為class檔案再運行).

(2)JS是一門弱型別的語言,沒有嚴格的資料型別.

優勢:

(1)良好的互動性

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

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

只要有瀏覽器的地方都能執行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檔案

創建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檔案,會導致代碼不會執行!比如:

<script src="demo1.js">
	alert("哈哈哈哈,,,");//代碼不會執行!!
</script>

JS語法

注釋

單行注釋: //注釋內容

多行注釋: /* 注釋內容 */

基本資料型別

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

(1) 數值型別-number

在JS中,數值型別只有一種,就是浮點型,

在JS中,需要時會自動的進行資料型別的轉換,比如:在顯示和處理的時候,浮點型和整型會自動的轉換,

2.4+3.6=6;

Infinity : 正無窮大

-Infinity : 負無窮大

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

(2) 字串型別-string

在JS中,字串是基本資料型別,

在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) 或者訪問陣列中一個沒有的元素的位置時,該位置處的值也是undefined.

(5) null

值也只有一個,就是null,表示空值或者不存在的物件,

復雜資料型別

函式、陣列、物件(自定義物件、內置物件、DOM物件、BOM物件…)

JS的變數

js是弱型別語言,所有型別的變數都是用var關鍵字定義,并且引數的型別可以隨時轉換,

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

練習:變數交換

(1) 在JS中是通過 var 關鍵字來宣告一個變數

var a=1; alert(a);

var x=true; alert(x);

var y=10.8; alert(y);

(2) 在JS中宣告的變數是不區分型別的, 可以指向任意的資料型別,

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中的運算子大致相同

算術運算子: +,-,*,/,%,++,–

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

比較運算子: ,!=,=,!==,&gt;,&gt;=,&lt;,&lt;=

位運算子: & , |

邏輯運算子: && ,||

前置邏輯運算子: ! (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  如果兩邊比較的值不是同一種資料型別,===直接回傳false,如果是同一種資料型別,==和===沒有區別!
console.log("1"=="1"); //true   //由于JS中字串是基本資料型別,比較字串相等通過 == 進行!
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);//求兩個數里的大數
var c = 8;
var d = a>b?(a>c?a:c):(b>c?b:c);
alert(d);//三個數里的大值

typeof運算子: 用于回傳變數或者運算式 的資料型別

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)		優秀 
60~80(包括60,但不包括80)		中等
0~60(包括0,但不包括60)		不及格
其他值							輸入有誤
// prompt函式可以彈框提示用戶輸入成績, 并回傳用戶輸入的內容
var score = prompt("請輸入您的成績:");
console.log( score );
if( score >= 80 && score <=100 ){
	alert("您的成績屬于:優秀!");
}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;
}

回圈陳述句

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回圈

注意: JS中的陳述句,判斷條件可以不是boolean型別,因為JS中會自動進行資料型別的轉換,

JS陣列

JS陣列用于在單個的變數中存盤多個值(其實就是一個容器),

JS中的陣列可以存盤例如:數值、字串、布林值、undefined、null、物件、函式等

JS陣列的宣告方式

var arr1 = new Array();//宣告一個空陣列
var arr2 = new Array("abc", "hello", true);//宣告一個具有初始值的陣列
alert(arr2.length);//3
var arr4 = [];//宣告一個空陣列
alert(arr4.length);//0
arr4 = ["abc", "hello", true];//宣告一個具有初始值的陣列
alert(arr4);

陣列需要注意的細節

(1)JS陣列中可以存放任意的資料型別

(2)JS中的陣列長度可以被改變

var arr1 = [];//宣告一個空陣列
console.log( arr1.length ); //此時陣列長度為 0
arr1.length = 10;
console.log( arr1.length ); //此時陣列長度為 10
arr1[99] = "abc";
console.log( arr1.length ); //此時陣列長度為 100
arr1.length = 0;
console.log( arr1.length ); //此時陣列長度為 0

陣列的常見操作

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

var arr = [123, "abc", false, new Object() ]
//遍歷陣列
for( var i=0; i< arr.length; i++ ){
	console.log( arr[i] ); 
}
//for..in
for(var i in a){
	console.log("i:::"+i);
}
//回圈接收用戶輸入,將資料存盤在陣列中,直至輸入‘exit’結束
c();
function c(){
	var a=[];
	for(;;){
		var x=prompt("請輸入整數:");
		a[a.length]=x; 
		if(x=="exit"){
			break;
		}
	}
	console.log(a);
}

JS函式

函式就是一個具有功能的代碼塊, 可以反復呼叫

函式就是包裹在花括號中的代碼塊,前面使用了關鍵詞 function

方式一:通過function關鍵字宣告函式

宣告:function 函式名稱([引數串列]){ 函式體 }
呼叫: 函式名稱([引數串列]);
案例:
function a(){ //無參函式定義
	var a = [1,2,3,4,5]; //定義陣列
	var sum =0; //定義變數
	for (var i = 0; i <a.length; i++) {
		if(a[i]%2==0){
			sum+=a[i];
		}
	}
	alert(sum);
}
a();//函式呼叫
function b(x,y){//定義含參函式
	alert(x+y);
}
b(1,"2");//函式呼叫
b(1,2);//函式呼叫

方式二:通過函式直接量宣告函式

宣告:var 函式名稱 = function([引數串列]){ 函式體 }
呼叫: 函式名稱([引數串列]);
案例:
// fn2();  //這種方式定義的函式還未加載就呼叫,會報錯.方式1沒問題
var fn2 = function(){ //定義無參函式
	alert(100);
}
fn2();  //函式呼叫

var fn3 = function(x,y){  //定義含參函式
	alert(x*y);
}
fn3(0.32,100);//函式呼叫
fn2("王海濤");引數個數不匹配,王海濤undefined
var e = function(x,y){ //定義有回傳值含參函式
	return x-y;
}
alert("函式回傳值:::"+ e(1.1,10.9) ); //函式呼叫

注意: 在JS中呼叫函式時, 傳遞的引數個數如果與宣告的引數個數不相同, 也不會報錯,

但是最好按宣告的個數來傳遞, 因為個數不符, 可能會引發一些問題!!!

JS物件

利用function關鍵字宣告物件,用new關鍵字創建物件,

內置物件

String/Array/Number/Math/JSON…

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

window.onload() 		    在瀏覽器加載完整個html后立即執行!
window.alert("text") 				提示資訊會話框
window.confirm("text") 			確認會話框
window.prompt("text") 			鍵盤輸入會話框
window.event						事件物件
window.document					檔案物件

Document物件–代表整個HTML檔案,可用來訪問頁面中的所有元素

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

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

自定義物件

(1)方式一:

  1. 宣告物件:function Person(){}
  2. 創建物件:var p1 = new Person();
  3. 設定屬性:p1.name = "張飛"; p1.age = 18;
  4. 設定方法:p1.run = function(){ alert(this.name+" : "+this.age); }
  5. 訪問p1物件:
/* 自定義物件*/
function Person(){ } /* 定義物件*/ 
var p1 = new Person(); /* 創建物件*/
p1.name="張三";
p1.age=20;
console.log(p1);  
p1.say = function(){ /* 定義函式*/
console.log("haha");
}
p1.say(); /* 函式呼叫*/
上面展示了js的強大!js的牛掰之處就在于,它的屬性可以邊寫邊創建,非常靈活,而java不行,必須先定義,

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

(2)方式二:

var p2 = {
		"pname":"李四",
		"page":100,
		"psay":function(){
			/* this使用p2里定義的 */
			console.log(this.pname+this.page);
		}
	}
	console.log(p2);
	p2.psay();  /* 函式呼叫*/

DOM樹的作用

組成

  • ECMAScript描述了javascript語言的語法和基本物件
  • 檔案物件模型DOM(Document Object Model)與HTML網頁API介面
  • 瀏覽器物件模型BOM(Browser Object Model),與瀏覽器進行互動的API介面

核心物件有:window瀏覽器視窗,navigator瀏覽器資訊,location瀏覽器當前地址資訊,history瀏覽器歷史資訊,screen用戶螢屏資訊,

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YMZBuK5C-1622526185003)(RackMultipart20210601-4-1vdjb36_html_7c541c1bae188940.png)]

DOM非常重要,實際開發更多通過js操作DOM物件實作對html頁面的操作,BOM也用,比較少用,所以學習重點放在DOM上,

DOM樹結構

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mw8l1nxY-1622526185008)(RackMultipart20210601-4-1vdjb36_html_1b9343e8dd3a0f7a.png)]

Document物件

--獲取物件: window.document
--呼叫方法: 
		getElementById("元素的id的屬性的值")--回傳1個元素
		getElementsByName("元素的name屬性的值")--回傳多個元素(用陣列)
		getElementsByClassName("元素的class屬性的值")--回傳多個元素(用陣列)
		getElementsByTagName("元素的標簽名的值")--回傳多個元素(用陣列)
write()--向檔案寫 HTML 運算式 或 JavaScript 代碼
title--回傳網頁的標題
id--設定或回傳元素的id
innerHTML--設定或回傳元素的內容

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();">單擊觸發js</a>
		<a href="#" ondblclick="method2();">雙擊觸發js</a>
		<a href="#" onm ouseenter="method3();">滑過觸發js</a>
		<a href="#" onm ouseleave="method4();">滑走觸發js</a>
<button onkeydown="alert(1);">點我</button>
	</body>
</html>

總結

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

  • getElementsByTagName 標簽名稱,得到陣列
  • getElementsByName name屬性,得到陣列
  • getElementsByClassName class屬性,得到陣列
  • getElementById id屬性,單個值

注:dom樹在描述標簽時除id方式,其它都是以陣列形式體現,哪怕是一個元素,

json

概念

ajax往往要完整應用還會配合一個技術:JSON,那什么是JSON呢?

JSON 指的是 JavaScript 物件表示法(JavaScript Object Notation)

JSON(JavaScript Object Notation,JS 物件簡譜) 起名不咋地,非常拗口,我們就記住它是一種輕量級的資料交換格式即可,它基于 ECMAScript (js規范)的一個子集,采用完全獨立于編程語言的文本格式來存盤和表示資料,簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言,是xml的終結者,成為主流開發方式(ajax異步請求,json回傳),

作用

JSON 是存盤和交換文本資訊的語法,當資料在瀏覽器與服務器之間進行交換時,這些資料只能是文本,JSON 屬于文本,并且我們能夠把任何 JavaScript 物件轉換為 JSON,然后將 JSON 發送到服務器,我們也能把從服務器接收到的任何 JSON 轉換為 JavaScript 物件,以這樣的方式,我們能夠把資料作為 JavaScript 物件來處理,無需復雜的決議和轉譯,

語法

JSON資料:

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

JSON 物件:

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

JSON 陣列:

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

轉換工具

使用JS里的內置物件JSON.用來把以 JSON 格式寫的字串 和 原生 JavaScript 物件互轉.

給服務器發送資料:JS物件轉成JSON字串 	JSON.stringify(Js物件)
接受服務器的資料: JSON字串轉成JS物件		JSON.parse("json字串")

測驗

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>json</title>
		<script>
			//json用來在瀏覽器和服務器之間做資料傳輸,輕量級,格式簡單明了.
			//JSON是js的內置物件,用來把json型別的字串和js物件互轉
			//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);
		//從服務器收到的資料都是字串,轉成js物件,用js語法決議屬性/方法
	var jsobj = JSON.parse(text);//串轉js物件,就可以寫js代碼決議資料
				console.log(jsobj);
				document.getElementById("d").innerHTML=jsobj.k2;
			}
			function js2chuan(){
				var obj = {"k1":"v1", "k2":"v2", "k3":"v3"};
				console.log(obj);
				//把瀏覽器的資料發給服務器,服務器只要json串
				var text = JSON.stringify(obj);//js物件轉成串
				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 服務器交換資料來異步更新網頁,這意味著可以更新網頁的部分,而不需要重新加載整個頁面,

原理

在這里插入圖片描述

核心物件XMLHttpRequest

所有現代瀏覽器都支持 XMLHttpRequest 物件,
XMLHttpRequest 物件用于同幕后服務器交換資料,這意味著可以更新網頁的部分,而不需要重新加載整個頁面,
在這里插入圖片描述
在這里插入圖片描述

測驗

在這里插入圖片描述
在這里插入圖片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>ajax-js版</title>
		<script>
			function change(){
				// 1. 創建xhr物件,用于同幕后服務器交換資料
				var xhr = new XMLHttpRequest();
				// 2. 定義當 readyState 屬性發生變化時被呼叫的函式
				xhr.onreadystatechange=function(){
					//3. status是200表示請求成功,readyState是4表示請求已完成且回應已就緒
					if(this.status==200 && this.readyState==4){
						// document.getElementById("d1").innerHTML="hi ajax";
						//5.以字串回傳回應資料,并展示
						document.getElementById("d1").innerHTML=this.responseText;
					}
				}
				//3.規定請求的型別(請求方式,檔案位置,異步)
				xhr.open('get','1.json',true);
				//xhr.open('get','http://localhost:8080/car/get',true);
				//4.xhr將請求發送到服務器
				xhr.send();
			}
		</script>
	</head>
	<body>
		<!-- 點擊時,使用ajax修改文字 -->
		<div id='d1' onclick="change()">你好</div>
	</body>
</html>

console除錯網頁

Chrome

專業人用專業的工具,瀏覽器除錯谷歌、火狐最佳,使用F12打開除錯視窗,也可以快捷鍵打開:ctrl+shift+i,

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QK9Qms9o-1622526185011)(RackMultipart20210601-4-1vdjb36_html_dce9447ed4ea7532.png)]

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6y32hLZF-1622526185013)(RackMultipart20210601-4-1vdjb36_html_1faab11e37410c47.png)]

log

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ApmBOpKD-1622526185014)(RackMultipart20210601-4-1vdjb36_html_452ff1cab3407fbf.png)]

warn

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qynkg3CR-1622526185016)(RackMultipart20210601-4-1vdjb36_html_12bf66c013182cde.png)]

table

以表格形式展現:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eEb87EdJ-1622526185019)(RackMultipart20210601-4-1vdjb36_html_d037d642cdad2159.png)]

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/292056.html

標籤:其他

上一篇:初識 JavaScript

下一篇:前端Ajax入門

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more