作者:wqjcarnation
鏈接:http://www.itdecent.cn/p/5d5a15a5c6c7
數(shù)組
http://www.w3school.com.cn/jsref/jsref_obj_array.asp
創(chuàng)建
var Obj = new Array();
var Obj = new Array( Size );
var Obj = new Array( 元素1, 元素2, …, 元素N );
var p1 = ['tom', 28, 'NewYork'];
使用
讀取
數(shù)組名[下標索引];
var products = new Array( “洗衣粉”, “香皂”, “洗潔精” ); // 商品列表
var product = products[ 1 ]; // 取出第二種商品
賦值
products [0] = “value1”;
products [1] = “value2”;
數(shù)組的主要屬性length
var Obj = new Array( 1, 2, 3 );
var count = Obj.length;
for循環(huán)賦值取值
for(var i=0;i<products .length;i++){
products [i] = “2000”+i;
}
for(var index in products ){
alert(products[index]);
}
完整樣例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var array_a=new Array();
array_a[0]="hello";
array_a[1]="world";
array_a[2]="123";
array_a[3]="234";
//alert(array_a[3]);
var products = new Array( "洗衣粉", "香皂", "洗潔精"); // 商品列表
//var product = products[ 1 ]; // 取出第二種商品
//alert(product);
//普通for循環(huán)打印
for(var i=0;i<products.length;i++){
//alert(products[i]);
}
//加強for 循環(huán)到的是數(shù)組下標
for(var index in products){
alert(products[index]);
}
</script>
</head>
<body>
</body>
</html>
常用方法
http://www.itdecent.cn/writer#/notebooks/30664089/notes/35709661
concat
<script>
var array_1=new Array(1,2,3);
//連接之后變成新的數(shù)組,原數(shù)組沒有變化
var array_2=array_1.concat(4,5,6);
for(var index in array_2){
alert(array_2[index]);
}
</script>
join
join() 數(shù)組轉(zhuǎn)成字符串。
document.write("數(shù)組轉(zhuǎn)成字符串:-------》"+array_2.join())
打印結(jié)果為數(shù)組元素用逗號分隔
1,2,3,4,5,6
reverse
reverse() 方法用于顛倒數(shù)組中元素的順序。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script>
var array_1=new Array(1,2,3,"a","b");
//連接之后變成新的數(shù)組,原數(shù)組沒有變化
var array_2=array_1.concat(4,5,6);
/* for(var index in array_2){
alert(array_2[index]);
} */
document.write("數(shù)組轉(zhuǎn)成字符串:-------》"+array_2.join()+"<br>");
document.write("數(shù)組反轉(zhuǎn)后:-------》"+array_2.reverse());
</script>
</head>
<body>
</body>
</html>
push
push() 方法可向數(shù)組的末尾添加一個或多個元素,并返回新的長度。
push與concat作用相似,都能連接數(shù)組
不同之處:
1)返回值類型不同。concat返回連接后的數(shù)組 push返回新數(shù)組的長度
2)concat連接后原數(shù)組沒變,實際變成了新的數(shù)組
push是對改變原數(shù)組(****)
<script>
var array_1 = new Array(1, 2, 3, "a", "b");
array_1.push(4, 5, 6);
document.write("數(shù)組轉(zhuǎn)成字符串:-------》" + array_1.join() + "<br>");
</script>
pop
pop() 方法用于刪除并返回數(shù)組的最后一個元素。
<script>
var array_1 = new Array(1, 2, 3, "a", "b");
array_1.push(4, 5, 6);
document.write("數(shù)組轉(zhuǎn)成字符串:-------》" + array_1.join() + "<br>");
var del=array_1.pop();
document.write("被刪除的元素-------》" +del+ "<br>");
document.write("pop后數(shù)組轉(zhuǎn)成字符串:-------》" + array_1.join() + "<br>");
</script>
學生練習
shift:刪除并返回數(shù)組的第一個元素
slice:從某個已有的數(shù)組返回選定的元素(截取從指定下標開始到指定下標結(jié)束的子數(shù)組)
寫法: arrayObject.slice(start,end) start end為元素下標
arrayObject.slice(start) 省略end時表示截取到尾部
start,end還可以為負數(shù),表示從尾部開始截取
sort:對數(shù)組的元素進行排序
http://www.w3school.com.cn/jsref/jsref_sort.asp
注意:無論是數(shù)字還是字符串,默認的排序都是按首字母順序,如果數(shù)字想按照大小排序,需要寫排序算法。
toString:把數(shù)組轉(zhuǎn)換為字符串,并返回結(jié)果
<script type="text/javascript">
function sortNumber(a, b) {
return a - b;
}
var arr = new Array(6);
arr[0] = "10";
arr[1] = "5";
arr[2] = "40";
arr[3] = "25";
arr[4] = "1000";
arr[5] = "1";
document.write(arr + "<br />");
document.write("原始的sort結(jié)果"+arr.sort()+ "<br />");
document.write("排序算法sort結(jié)果"+arr.sort(sortNumber)+ "<br />");
document.write("toString后的結(jié)果"+arr.toString()+ "<br />");
document.write("join后的結(jié)果"+arr.join(";")+ "<br />");
</script>
join與toString的異同
相同點:都可以將數(shù)組轉(zhuǎn)換成字符串
不同點:join默認用逗號分隔,但可以通過調(diào)用有參構(gòu)造指定分隔符
toString只能用逗號分隔。不可以定制
制作省市聯(lián)動
參考手冊http://www.w3school.com.cn/jsref/index.asp
http://www.runoob.com/jsref/coll-select-options.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
//js一維數(shù)組定義
var province = new Array();
//給數(shù)組賦值
province[0] = "遼寧省";
province[1] = "吉林省";
//準備城市信息 二維數(shù)組
//二維數(shù)組
var citys = new Array();
citys[0] = new Array();
citys[1] = new Array();
citys[0][0] = "沈陽市";
citys[0][1] = "撫順市";
citys[0][2] = "本溪市";
citys[0][3] = "遼陽市";
citys[0][4] = "鞍山市";
citys[1][0] = "吉林市";
citys[1][1] = "四平市";
citys[1][2] = "松源市";
citys[1][3] = "長春市";
function showCity(){
//alert("加載市");
//獲取用戶省的下拉列表框選擇了哪一個
var provinces=document.getElementById("province");
var city=document.getElementById("city");
//alert("被選中的省的索引:"+provinces.selectedIndex);
//獲取元素在數(shù)組中的真實索引
var index=provinces.selectedIndex-1;
//讀取citys中第一維的下標為index的數(shù)據(jù)
//citys[index] 是實際需要加載的城市的信息
//為了解決選項重復添加的問題,需要在每次添加前先清空city下拉列表框
city.options.length=0;
for(var i=0;i<citys[index].length;i++){
//把城市信息添加到城市下拉列表中
//alert(citys[index][i]);
//obj.add(new Option("文本","值")); //這個只能在IE中有效
//obj.options.add(new Option("text","value")); //這個兼容IE與firefox
//alert(Number(""+index+""+i));
city.options.add(new Option(citys[index][i],Number(""+index+""+i)));
}
}
</script>
</head>
<body>
省<select name="province" id="province" onchange="showCity()">
<option value="">請選擇省</option>
<script>
for (var i = 0; i < province.length; i++) {
document.write("<option value=" + i + ">" + province[i] + "</option>");
}
</script>
</select>
城市:<select name="city" id="city">
<option value="">請選擇城市</option>
</select>
</body>
</html>
對象
創(chuàng)建、使用(線上)
JavaScript內(nèi)置對象
常用的內(nèi)部對象
Array、Global、Date、Math、String、Number、Boolean
Array:見上面部分
Global: ECMAScript 中的Global 對象在某種意義上是作為一個終極的“兜底兒對象”來定義的。換句話說,不屬于任何其他對象的屬性和方法,最終都是它的屬性和方法。事實上,沒有全局變量或全局函數(shù);所有在全局作用域中定義的屬性和函數(shù),都是Global 對象的屬性。本書前面介紹過的那些函數(shù),諸如isNaN()、isFinite()、parseInt()以及parseFloat()等看起來都像獨立的函數(shù),實際上全都是Global對象的方法。還有就是常見的一些特殊值,如:NaN、undefined等都是它的屬性。
encodeURI() 編碼,加密
encodeURIComponent() 編碼。支持中文和特殊字符
decodeURI() 解碼,解密
decodeURIComponent() 解碼
<script>
var box = '//張三';
alert("加密的:"+encodeURI(box)); //只編碼了中文
var box = '//張三';
alert("加密的:"+encodeURIComponent(box));//特殊字符和中文編碼了
var box = '//張三';
alert("解密的"+decodeURI(encodeURI(box))); //還原
var box = '//張三';
alert("解密的"+decodeURIComponent(encodeURIComponent(box)));//還原
</script>
**eval:計算結(jié)果 **
alert(eval(2+2)); 也支持function定義
Date:
參考網(wǎng)址:http://www.w3school.com.cn/jsref/jsref_obj_date.asp
var date = new Date(“July 4,2004,6:25:22”)
var date = new Date(“July 4,2004”)
var date = new Date(2004,7,4,6,25,22)// 2004年8月4日
var date = new Date(2004,7,4)// 2004年8月4日
var date = new Date(“2004/7/4”)
var date = new Date(Milliseconds)
var date = new Date();
獲取日期和時間的方法
getYear():返回年數(shù);(小于2000年返回兩位)
getFullYear():返回年數(shù);
getMonth():返回當月號數(shù);(比實際小1)
getDate():返回當日號數(shù);
getDay():返回星期幾;(0表示星期日 1-6就是星期1至星期六)
getHours():返回小時數(shù);
getMinutes():返回分鐘數(shù);
getSeconds():返回秒數(shù);
getTime():返回毫秒數(shù);
設(shè)置日期和時間的方法
setYear():設(shè)置年數(shù);
setMonth():設(shè)置當月號數(shù);(set7表示8月)
setDate():設(shè)置當日號數(shù);
setDay():設(shè)置星期幾;
setHours():設(shè)置小時數(shù);
setMinutes():設(shè)置分鐘數(shù);
setSeconds():設(shè)置秒數(shù);
setTime():設(shè)置毫秒數(shù);
課堂練習:
在頁面打印當前年月日時分秒和星期
yyyy年MM月dd日 HH:mm:ss 星期***
Math
參考網(wǎng)址:
http://www.w3school.com.cn/jsref/jsref_obj_math.asp
屬性:PI LN10 SQRT1-2等
如: var pi_value=Math.PI;
方法:
abs(x):
<script type="text/javascript">
document.write(Math.abs(7.25) + "<br />")
document.write(Math.abs(-7.25) + "<br />")
document.write(Math.abs(7.25-10))
</script>
ceil(x):
exp(x):
floor(x):
round(x):
sqrt(x):
random():
String
var string_name = “string of text”;
var string_name = new String(“string of text”)
屬性
length:返回String對象的長度
方法:同學試一下。重點試indexOf lastIndexOf replace substring substr charAt charCodeAt
錨點
<a href="#chap01">第1章 date</a>
<a name="chap01">Date</a>
代碼樣例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="#chap01">第1章 date</a>
<a href="#chap02">第2章 String</a>
</a>
<br><br><br><br><br><br><br>
</a>
<br><br><br><br><br><br><br>
<a name="chap01">Date</a>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<a name="chap02">String</a>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br>
</body>
</html>
正則表達式
var reg= new RegExp('/^\w{6,20}$/}'); //正則驗證規(guī)則設(shè)置
如:
if(reg.test(username)){
alert("格式正確");
}else{
alert("格式錯誤");
return false;
}
var box = new RegExp('box', 'ig'); //第二個參數(shù)可選模式修飾符
var box = /box/; //直接用兩個反斜杠
var box = /box/ig;
i--大小寫不敏感
g--全局匹配
m-多行匹配
定時器
setTimeout(執(zhí)行的js,毫秒)
setInterval(執(zhí)行的js,毫秒)
兩者區(qū)別setTimeout 延遲幾毫秒執(zhí)行一次js
setInterval 每間隔一定毫秒數(shù)執(zhí)行一段js
clearInterval(名字);清除定時器
clearTimout(名字);
寫法:
<script>
var t=setTimeout("alert(new Date())",5000);
</script>
<script>
var t=setInterval("alert(new Date())",1000);
</script>
學生練習
把上面做的時鐘改為每秒刷新的
正則表達式語法 (講)##
兩種寫法
第一種字面量方式
var reg = /abcd/g;
第二種 new 對象的方式
var reg = new RegExp('abcd','g');
這兩種寫法都是兩部分參數(shù),第一部分定義驗證規(guī)則,第二部分是屬性
屬性就三個值 i g m
i-忽略大小寫進行匹配
g-全局匹配
m-多行匹配
第一部分規(guī)則是正則的關(guān)鍵。
\d 匹配一個數(shù)字字符。等價于 [0-9]。
\D 匹配一個非數(shù)字字符。等價于 [^0-9]。
\w 用于匹配字母,數(shù)字或下劃線字符。
\W W大寫,可以匹配任何一個字母或者數(shù)字或者下劃線以外的字符
[a-z] 字符范圍。匹配指定范圍內(nèi)的任意字符。
[^a-z] 負值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。
x|y 匹配 x 或 y
{n} 表示前面的字符或者組合項連續(xù)出現(xiàn)n次 ---待確認
{n,} 表示前面出現(xiàn)的字符或者組合項,至少出現(xiàn)n次
{n,m} 表示前面出現(xiàn)的字符或者組合項,至少出現(xiàn)n次,至多出現(xiàn)m次,(n<=m)
\d{4} 4個任意的數(shù)字[a-z]{6} --待確認
<script>
//6-20位的英文數(shù)字字母下劃線,就可以用下面的規(guī)則
var reg=new RegExp(/^\w{6,20}$/);
if(reg.test("wangq")){
alert("格式正確");
}else{
alert("格式錯誤");
}
</script>
驗證身份證號
var reg=new RegExp(/^\d{15}$|^(\d{18}|\d{17}[xX])$/);
if(reg.test("65010495093007167C")){
alert("格式正確");
}else{
alert("格式錯誤");
}
驗證郵編
var reg=new RegExp(/^\d{6}$/);
if(reg.test("123456")){
alert("正確");
}else{
alert("錯誤");
}
阻止表單自動提交
onsubmit="return functionname();"
function如果返回false阻止表單提交,如果返回true則可以提交
<form id="form1" onsubmit="return validate()">
<input type="text" id="username"/>
<input type="submit"/>
</form>
function validate(){
var name=document.getElementById("username").value;
alert("驗證錯誤");
return false;
}
學生練習
制作一個注冊頁面用戶名不能為空并且(6-20位英文字母數(shù)字下劃線)
密碼 重復密碼 6位以上英文字母數(shù)字下劃線 密碼和重復密碼必須一致
身份證號:舊身份證號為15位數(shù)字
新身份證號為18位數(shù)字, 或17位數(shù)字,最末位為x或X
email正常的郵箱規(guī)則
常用的正則
驗證郵政編碼:/^\d{6} [圖片上傳失敗...(image-a0573e-1553582541439)]
/
驗證身份證號碼:/^\d{15} | \d{18} | \d{17}[x X] [圖片上傳失敗...(image-7fa723-1553582541439)]
/
驗證電子郵箱地址:/^\w+((-\w+)|(.\w+))@[A-Za-z0-9] ((.|-)[A-Za-z0-9]+).[A-Za-z0-9]+[圖片上傳失敗...(image-67e51f-1553582541439)]
/