javasscript基礎

1、使用JS完成註冊表單數據校驗

1.需求分析

用戶在進行註冊的時候會輸入一些內容,可是有些用戶會輸入一些不合法的內容,這樣會致使服務器的壓力過大此時咱們須要對用戶輸入的內容進行一個校驗(前端校驗和後臺校驗)前端校驗防君子不防小人。javascript

 

 

2.技術分析

2.1 javasscript的介紹

 

Javascriptjava沒有關係(雷鋒和雷峯塔)它不是編程語言(腳本語言)php

2.2 javascript的做用

HTML:它是整個網站的骨架。html

CSS它是對整個網站骨架的內容進行美化(修飾)前端

Javascript讓整個頁面具備動態效果。java

 

2.3 javascript的組成部分

 

ECMAScript:它是javascript的核心(語法、變量、數據類型、語句、函數……)node

DOM:document object model 整個文檔對象正則表達式

BOM:瀏覽器對象編程

 

2.4 javascript語法

區分大小寫數組

變量是弱類型的(String str=」aaa」 ,var str=」123」;)瀏覽器

每行結尾的分號無關緊要(建議你們寫上)

註釋javaphp等語言相

 

2.5javascript的變量

變量能夠不用聲明,變量是弱類型統一使用var來定義!定義變量的時候不要使用關鍵字和保留字。

 

2.6 javascript數據類型

Javascript數據類型分爲原始數據類型和引用數據類型

原始數據類型:

stringnumberbooleannullundefined

引用數據類型:

 

2.7 javascript運算符

其它運算符與java大致一致,須要注意其等性運算符

== 它在作比較的時候會進行自動轉換。

=== 它在作比較的時候會進行自動轉換。

2.8 javascript語句

全部語句與java大致一致。

 

2.9 獲取元素內容

獲取元素

document.getElementById(「id名」);

獲取元素裏面的值

document.getElementById(「id名」).value;

2.10 javascript事件

表單提交事件:onsubmit

 

2.11 javascripte的輸出

警告框alert();

頁面指定位置寫入內容:innerHTML(屬性)

頁面寫入內容:document.write(「」);

 

3.步驟分析

第一步肯定事件(onsubmit)併爲其綁定一個函數

第二步書寫這個函數(獲取用戶輸入的數據)

第三步:對輸入的數據進行判斷(非空)

第四步:若是輸入的內容爲空,給出錯誤提示信息(alert),不讓表單提交

第五步:若是輸入的內容合法,讓表單提交。

 

4.代碼實現

Html部分代碼

爲表單綁定一個事件

<form action="#" method="get" onsubmit="return checkForm()">

 

須要校驗的輸入項目定義id

<input type="text" name="user" id="user" />

 

Javascript部分代碼

<script type="text/javascript">

function checkForm(){

/*校驗用戶名*/

//alert("aa");

//獲取用戶輸入的數據

var uValue =  document.getElementById("user").value;

//alert(uValue);

if(uValue==""){

//給出錯誤提示信息

alert("用戶名不能爲空!");

return flase;

}

 

/*校驗郵箱*/

var Evalue = document.getElementById("email").value;

if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(Evalue)){

//給出錯誤提示信息

alert("郵箱格式不正確!");

return false;

}

}

</script>

 

2、使用JS完成首頁輪播圖效果案例

1.需求分析

咱們但願在首頁完成對輪播圖的效果實現:

 

 

 

2.技術分析

獲取元素 document.getElementById(「id名稱」)

 

事件(onload)

 

定時操做setInterval(「changeImg()」,3000);

 

3.步驟分析

第一步肯定事件(頁面加載事件onload)併爲其綁定一個函數

第二步:書寫這個函數(設置一個定時操做);

第三步:書寫定時操做裏面的函數

第四步:獲取圖片的位置

第五步:爲該圖片設置src屬性值。

4.代碼實現

Javascript部分代碼

<script>

function init(){

setInterval("changeImg()",3000);

}

 

var i=1;

function changeImg(){

i++;

var imgEl = document.getElementById("img1");

imgEl.src="../img/"+i+".jpg";

if(i==3){

i=0;

}

}

 

</script>

 

Html部分代碼

肯定事件:onload  加在body裏面

<body onload="init()">

 

給指定的圖片位置定義一個id

<img src="../img/1.jpg" width="1300px" id="img1"/>

 

3、使用JS完成頁面定時彈出廣告

1.需求分析

咱們但願在首頁中的頂部作一個定時彈出廣告圖片。實現效果以下:

 

 

2.技術分析

獲取圖片的位置(document.getElementById(「」))

隱藏圖片:displaynone

定時操做:setInterval(「顯示圖片的函數3000);

 

3.步驟分析

第一步肯定事件(頁面加載事件onload)爲其綁定一個函數init()

第二步在init函數中設置一個顯示圖片的定時操做。

第三步:書寫顯示圖片的函數(獲取圖片元素,設置其display屬性爲block)

第四步設置一個隱藏圖片的定時操做

第五步書寫隱藏圖片的函數(獲取圖片元素,設置其display屬性爲none)

 

4.代碼實現

Javascript部分代碼:

<script type="text/javascript">

var time;

function init(){

//設置顯示圖片的定時操做

time = setInterval("showAd()",3000);

}

 

//顯示圖片的函數

function showAd(){

//獲取廣告圖片的

var imgEl = document.getElementById("img1");

//設置圖片的屬性(display)讓其顯示

imgEl.style.display="block";

 

//清除顯示圖片的定時操做

clearInterval(time);

 

//設置隱藏廣告圖片的定時操做

time = setInterval("hiddenAd()",3000);

}

 

//書寫隱藏廣告圖片的函數

function hiddenAd(){

//獲取廣告圖片並設置隱藏的屬性

document.getElementById("img1").style.display="none";

//清除隱藏圖片的定時操做

clearInterval(time);

}

</script>

 

Html部分代碼:

<img src="../img/f001a62f-a49d-4a4d-b56f-2b6908a0002c_g.jpg" width="1300px" style="display: none;" id="img1"/>

 

肯定事件(<body onload="init()">)

 

5.總結

5.1 javascript的引入方式

Ø 內部引入方式

直接javascript代碼寫到<script type=」text/javascript」></script>

Ø 外部引入方式

須要建立一個.js文件,在裏面書寫javascript代碼而後在html文件中經過script標籤的src屬性引入該外部的js文件

 

5.2 BOM對象

BOM對象:瀏覽器對象模型(操做與瀏覽器相關的內容)

Ø Window對象

Window 對象表示瀏覽器中打開的窗口。

 

setInterval():它有一個返回值,主要是提供給clearInterval使用

setTimeout():它有一個返回值,主要是提供給clearTimeout使用

clearInterval():該方法只能清除由setInterval設置的定時操做

clearTimeout():該方法只能清除由setTimeout設置的定時操做

 

彈出框的幾個方法:

<script>

//警告框

//alert("aaa");

 

//確認按鈕

//confirm("您確認刪除嗎?");

 

//提示輸入框

prompt("請輸入價格:");

</script>

</head>

 

Ø Location對象

Location 對象包含有關當前 URL 的信息。

 

href:該屬性能夠完成經過JS代碼控制頁面的跳轉。

<html>

<head>

<meta charset="UTF-8">

<title>location對象</title>

<script>

function tiao(){

window.location.href="http://www.itcast.cn";

}

</script>

</head>

<body>

<a href="#" onclick="tiao()">跳轉到傳智播客首頁</a>

</body>

</html>

 

Ø History對象

History 對象包含用戶(在瀏覽器窗口中)訪問過的 URL。

 

歷史頁面:使用location頁面(href屬性值改成當前history)

 

History頁面代碼:

<input type="button"  value="返回上一個頁面" onclick="javascript:history.back()"/>

 

go(參數)

參數-1 返回上一個歷史記錄頁面;-2返回上上一個歷史記錄頁面1進入下一個歷史記錄頁面。

 

按鈕點擊失效:

onclick=」javascript:volid(0)」

Ø Navigator對象

Navigator 對象包含有關瀏覽器的信息。(該對象開發中不怎麼經常使用)

 

 

Ø Screen對象

Screen 對象包含有關客戶端顯示屏幕的信息。(該對象開發中不怎麼經常使用)

 

 

4、使用JS完成註冊頁面表單校驗

1.需求分析

以前咱們已經使用彈出框的方式實現了表單校驗的功能,可是此種方式用戶體驗效果極差!咱們但願作成以下這種效果:

 

2.技術分析

使用事件(聚焦事件onfocus離焦事件onblur),以前使用onsubmit也須要

使用<span></span>

向頁面指定位置寫入內容:innerHTML屬性(該屬性的值存在覆蓋現象)

3.步驟分析

第一步:肯定事件(給出提示信息使用聚焦事件,給出校驗結果信息使用離焦事件)爲其綁定函數

第二步聚焦事件綁定的函數中(獲取span給出提示信息)

第三步:離焦事件綁定的函數中(獲取用戶輸入的內容進行判斷)

第四步若是失敗,在span位置給出錯誤提示信息,若是成功,讓span內容爲空。

4.代碼實現

Javascript部分代碼:

<sctript>

function showTips(id,info){

//獲取span元素,給出提示信息

document.getElementById(id+"span").innerHTML="<font color='gray'>"+info+"</font>";

}

 

function check(id,info){

//獲取用戶輸入的數據

var uValue = document.getElementById(id).value;

//進行判斷

if(uValue==""){

//span位置給出錯誤提示信息

document.getElementById(id+"span").innerHTML="<font color='red'>"+info+"</font>";

}else{

document.getElementById(id+"span").innerHTML="";

}

}

 

</script>

 

Html部分代碼

<input type="text" name="user" id="user" onfocus="showTips('user','用戶名必須以字母開頭!')" onblur="check('user','用戶名不能爲空!')"/><span id="userspan"></span>

 

5.總結

5.1 javascript的事件

咱們以前已經學習過的事件(onsubmit/onload/onfocus/onblur/onclick)

其它事件:

 

 

事件案例演示

 

 

5、使用JS完成表格的一個隔行換色

1.需求分析

咱們但願在後臺頁面中實現一個隔行換色的效果顯示全部的用戶信息,顯示效果以下:

 

2.技術分析

新標籤的學習

<thead>

<tr>

<th></th>

</tr>

</thead>

<tbody>

<tr>

<td></td>

</tr>

</tbody>

 

肯定事件(頁面加載事件onload)

 

獲取元素:獲取表格(document.getElementById()),最終是爲了獲取表格中tbody裏面行數(長度)

 

Tbody裏面的行數(rows.length)

 

JS的遍歷(for循環)

 

獲取奇數行和偶數行(遍歷中角標對2取餘)

 

設置背景顏色(.style.backgroundColor)

 

3.步驟分析

第一步肯定事件(onload)併爲其綁定一個函數

第二步:書寫(獲取表格)

第三步獲取tbody裏面的行數

第四步對tbody裏面的行進行遍歷

第五步獲取奇數行和偶數行(角標2取餘)

第六步分別對奇數行和偶數行設置背景顏色

4.代碼實現

JS代碼

<script>

window.onload = function(){

//1.獲取表格

var tblEle = document.getElementById("tbl");

//2.獲取表格中tbody裏面的行數(長度)

var len = tblEle.tBodies[0].rows.length;

//alert(len);

//3.tbody裏面的行進行遍歷

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

if(i%2==0){

//4.對偶數行設置背景顏色

tblEle.tBodies[0].rows[i].style.backgroundColor="pink";

}else{

//5.對奇數行設置背景顏色

tblEle.tBodies[0].rows[i].style.backgroundColor="gold";

}

}

}

</script>

 

HTML代碼:

給table裏面添加一個id=「tbl」,在table裏面添加新標籤<thead></thead><tbody></tbody>

5.實現一個表格的高亮顯示

爲了增強對事件的學習添加此案例:

 

分析

第一步:肯定事件(onmouseoveronmouseout)分別爲其綁定一個函數

第二步獲取鼠標移上去的那行對其設置背景顏色

 

 

代碼

JS代碼

<script>

function changeColor(id,flag){

if(flag=="over"){

document.getElementById(id).style.backgroundColor="red";

}else if(flag=="out"){

document.getElementById(id).style.backgroundColor="white";

}

}

</script>

 

HTML代碼

<tr onmouseover="changeColor('tr1','over')" id="tr1" onmouseout="changeColor('tr1','out')">

 

6.總結

回顧以前已經使用過的事件

(onsubmit/onclick/onload/onfocus/onblur/onmouseover/onmouseout)

 

onfocus/onblur:聚焦離焦事件,用於表單校驗的時候比較合適。

onclick/ondblclick:鼠標單擊和雙擊事件

onkeydown/onkeypress:搜索引擎使用較多

onload:頁面加載事件全部的其它操做(匿名方式)均可以放到這綁定函數裏面去。若是是有名稱,那麼在html頁面只能寫一個。

onmouseover/onmouseout/onmousemove:購物網站商品詳情頁。

onsubmit:表單提交事件 有返回值,控制表單是否提交。

onchange:當用戶內容的時候使用這個事件(二級聯動)

 

6、使用JS完成全選和選不選操做

1.需求分析

咱們但願在後臺系統實現一個批量刪除的操做(全選全部的複選框)顯示效果以下:

 

2.技術分析

肯定事件(鼠標單擊事件onclick),事件綁定到編號前面的複選框裏面

 

獲取編號前面複選框的狀態(是否選中)

獲取複選框:var checkAllEle = document.getElementById(「id」)

獲取複選框的狀態checkAllEle.checked?

 

獲取下面全部的複選框

document.getElementsByName(「name」);

 

3.步驟分析

第一步:肯定事件(onclick)併爲其綁定一個函數

第二步:書寫函數(獲取編號前面的複選框,獲取其狀態)

第三步判斷編號前面複選框的狀態(若是爲選中,獲取下面全部的複選框,並將其狀態置爲選中)

第四步判斷編號前面複選框的狀態(若是選中,獲取下面全部的複選框,並將其狀態置爲選中)

4.代碼實現

JS部分代碼:

<script>

function checkAll(){

//1.獲取編號前面的複選框

var checkAllEle = document.getElementById("checkAll");

//2.對編號前面複選框的狀態進行判斷

if(checkAllEle.checked==true){

//3.獲取下面全部的複選框

var checkOnes = document.getElementsByName("checkOne");

//4.對獲取的全部複選框進行遍歷

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

//5.拿到每個複選框,並將其狀態置爲選中

checkOnes[i].checked=true;

}

}else{

//6.獲取下面全部的複選框

var checkOnes = document.getElementsByName("checkOne");

//7.對獲取的全部複選框進行遍歷

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

//8.拿到每個複選框,並將其狀態置爲未選中

checkOnes[i].checked=false;

}

}

}

</script>

 

HTML代碼

複選框前面的

<th><input type="checkbox" onclick="checkAll()" id="checkAll"/></th>

 

下面全部的複選框:

<td><input type="checkbox" name="checkOne"/></td>

 

5.總結

5.1 javascriptDOM操做

 

Document:整個html文件都成爲一個document文檔

Element:全部的標籤都是Element元素

Attribute:標籤裏面的屬性

Text:標籤中間夾着的內容text文本

Node:documentelementattributetext統稱爲節點node.

Ø Document對象

每一個載入瀏覽器的 HTML 文檔都會成爲 Document 對象。

 

後面兩個方法獲取以後須要遍歷!

 

如下兩個方法很重要,可是在手冊中查不到!

建立文本節點:document.createTextNode()

建立元素節點:document.createElement()

Ø Element對象

咱們所認知的html頁面中全部的標籤都是element元素

element.appendChild()

向元素添加新的子節點,做爲最後一個子節點。

element.firstChild

返回元素的首個子節點。

element.getAttribute()

返回元素節點的指定屬性值。

element.innerHTML

設置或返回元素的內容。

element.insertBefore()

在指定的已有的子節點以前插入新節點。

element.lastChild

返回元素的最後一個子元素。

element.setAttribute()

把指定屬性設置或更改成指定值。

element.removeChild()

從元素中移除子節點。

element.replaceChild()

替換元素中的子節點。

 

 

Ø Attribute對象

咱們所認知的html頁面中全部標籤裏面的屬性都是attribute

 

 

5.2 DOM練習

頁面中使用列表顯示一些城市

<ul>

<li>北京</li>

<li>上海</li>

<li>廣州</li>

</ul>

咱們但願點擊一個按鈕實現動態添加城市。

 

分析

事件(onclick)

獲取ul元素節點

建立一個城市的文本節點

建立一個li元素節點

文本節點添加li元素節點中去。

使用element裏面的方法appendChild()添加子節點

代碼

JS代碼

<script>

window.onload = function(){

document.getElementById("btn").onclick = function(){

//1.獲取ul元素節點

var ulEle = document.getElementById("ul1");

//2.建立城市文本節點

var textNode = document.createTextNode("深圳");//深圳

//3.建立li元素節點

var liEle = document.createElement("li");//<li></li>

//4.將城市文本節點添加到li元素節點中去

liEle.appendChild(textNode);//<li>深圳</li>

//5.li添加到ul中去

ulEle.appendChild(liEle);

}

}

</script>

 

HTML代碼

<input type="button" value="添加新城市" id="btn"/>

<ul id="ul1">

<li>北京</li>

<li>上海</li>

<li>廣州</li>

</ul>

 

7、使用JS完成省市二級聯動

1.需求分析

咱們但願在註冊頁面中添加一個字段(籍貫)當用戶選擇一個具體的省份,在後面的下拉列表中動態加載該省下全部的城市顯示的效果以下:

 

2.技術分析

事件(onchange)

使用一個二維數組來存儲省份和城市(二維數組的建立?)

獲取用戶選擇的省份(使用方法傳參的方式:this.value)

遍歷數組(獲取省份用戶選擇的省份比較若是相同了,繼續遍歷該省份下全部的城市)

建立文本節點和元素節點進行添加操做

 

createTextNode()

createElement()

appendChild()

3.步驟分析

第一步肯定事件(onchange)併爲其綁定一個函數

第二步建立一個二維數組用於存儲省份和城市

第三步獲取用戶選擇的省份

第四步遍歷二維數組中的省份

第五步遍歷的省份與用戶選擇省份比較

第六步若是相同,遍歷該省份下全部的城市

第七步建立城市文本節點

第八步建立option元素節點

第九步城市文本節點添加到option元素節點中去

第十步獲取第二個下拉列表,並將option元素節點添加進去

第十一:每次操做前清空第二個下拉列表的option內容。

 

 

 

4.代碼實現

JS代碼

<script>

//1.建立一個二維數組用於存儲省份和城市

var cities = new Array(3);

cities[0] = new Array("武漢市","黃岡市","襄陽市","荊州市");

cities[1] = new Array("長沙市","郴州市","株洲市","岳陽市");

cities[2] = new Array("石家莊市","邯鄲市","廊坊市","保定市");

cities[3] = new Array("鄭州市","洛陽市","開封市","安陽市");

 

function changeCity(val){

 

//7.獲取第二個下拉列表

var cityEle = document.getElementById("city");

 

//9.清空第二個下拉列表的option內容

cityEle.options.length=0;

 

//2.遍歷二維數組中的省份

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

//注意,比較的是角標

if(val==i){

//3.遍歷用戶選擇的省份下的城市

for(var j=0;j<cities[i].length;j++){

//alert(cities[i][j]);

//4.建立城市的文本節點

var textNode = document.createTextNode(cities[i][j]);

//5.建立option元素節點

var opEle = document.createElement("option");

//6.將城市的文本節點添加到option元素節點

opEle.appendChild(textNode);

//8.option元素節點添加到第二個下拉列表中去

cityEle.appendChild(opEle);

}

}

}

}

</script>

 

Html代碼:

<select onchange="changeCity(this.value)">

<option>--請選擇--</option>

<option value="0">湖北</option>

<option value="1">湖南</option>

<option value="2">河北</option>

<option value="3">河南</option>

</select>

<select id="city">

 

</select>

 

5.總結

5.1 javascript內置對象

 

Ø Array對象

數組的建立:

 

數組的特色:

長度可變!數組的長度=最大角標+1

 

Ø Boolean對象

對象建立:

 

若是value 不寫,那麼默認建立的結果爲false

Ø Date對象

getTime()

返回 1970 年 1 月 1 日至今的毫秒數。

解決瀏覽器緩存問題

 

Ø Mathnumber對象

與java裏面的基本一致。

Ø String對象

match()

找到一個或多個正則表達式的匹配。

substr()

從起始索引號提取字符串中指定數目的字符。

substring()

提取字符串中兩個指定的索引號之間的字符。

例子

<script>

var str = "-a-b-c-d-e-f-";

var str1 = str.substr(2,4);//-b-c

//alert(str1);

 

var str2 = str.substring(2,4);//-b

alert(str2);

</script>

 

Ø RegExp對象

正則表達式對象

test

檢索字符串中指定的值。返回 true 或 false。

 

5.2 全局函數

全局屬性和函數可用於全部內建的 JavaScript 對象

 

關於編碼和解碼的一組方法:

<script>

var str = "張三";

//alert(encodeURI(str));//%E5%BC%A0%E4%B8%89

//alert(encodeURIComponent(str));//%E5%BC%A0%E4%B8%89

 

//alert(decodeURI(encodeURI(str)));//張三

//alert(decodeURIComponent(encodeURIComponent(str)));//張三

 

var str1 = "http://www.itheima.cn";

//alert(encodeURI(str1));//http://www.itheima.cn

//alert(encodeURIComponent(str1));//http%3A%2F%2Fwww.itheima.cn

 

//alert(decodeURI(encodeURI(str1)));//http://www.itheima.cn

//alert(decodeURIComponent(encodeURIComponent(str1)));//http://www.itheima.cn

 

var str2 = "alert('abc')";

//alert(str2);

eval(str2);

 

</script>

相關文章
相關標籤/搜索