javascript學習~程式設計小哥令狐
1.javascript的變量類型:
- 數值類型:number
- 字元串類型:string
- 對象類型:object
- 布爾類型:boolean
- 函數類型:function
2.JavaScript裡的特殊值:
- undefined:未定義,所有js變量未賦初始值的時候,預設都是undefined
- null:空值
- NAN:全稱是Not a number 非數字,非數值。
3.JavaScript變量定義及其初始化
var a;
a=10;
// var i;
// alert(i);//undefined
//i=12;
// alert(i);//12
//alert(typeof (i));
var a=12;
var b="abc";
alert(a*b);//NAN,非數值
4.關系(比較)運算
- 等于: == 數字比較
- 全等于: === 數字比較+資料類型比較
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var a=123;
var b="123";
alert(a==b);//數字面比較,為true
alert(a===b);//資料類型比較,為false
</script>
</head>
<body>
</body>
</html>
5.邏輯運算
- 與運算【且運算】: &&
- 或運算: ||
- 非運算【取反運算】:!
- 0、null、undefined、“空字元串”都認為是false
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// var a=0;
// if(a){
// alert("0為真");
// }else{
// alert("0為假");
// }
// var b=null;
// if(b){
// alert("null為真");
// }else{
// alert("null為假");
// }
// var c=undefined;
// if(c){
// alert("undefined為真");
// }else{
// alert("undefined為假");
// }
var d="";
if(d){
alert("空字元串為真");
}else{
alert("空字元串為假");
}
</script>
</head>
<body>
</body>
</html>
6.數組
- 數組的定義:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
var arr=[];//定義一個空數組
// alert(arr.length);
arr[0]=12;
// alert(arr[0]);
//
arr[2]="abc";
// alert(arr.length);
//數組的周遊
for (var i=0;i<arr.length;i++){
alert(arr[i]);
}
</script>
</head>
<body>
</body>
</html>
7.函數
7.1函數的定義方法(一)
-
function
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//定義一個無慘函數
// function fun(){
// alert("無參函數被調用");
// }
// //函數調用
// fun();
function fun2(a,b) {
alert("有參函數的調用=》a="+a+"b="+b);
}
fun2(1,2)
//定義帶有傳回值的函數
function sum(num1,num2){
return (num1+num2);
}
alert(sum(1,2));
</script>
</head>
<body>
</body>
</html>
7.2函數定義方法(二)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//無參函數
var fun=function () {
alert("無參函數");
}
fun();
//有參函數
var fun2=function(a,b){
alert("有參函數a="+a+",b="+b);
}
fun2(1,2);
//有參函數帶傳回值
var sum=function(num1,num2){
return num1+num2;
}
alert(sum(1,2));
</script>
</head>
<body>
</body>
</html>
7.3隐形參數arguments
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function fun(){
//alert(arguments.length);//檢視參數的個數
/*
* 這個功能類似于數組的功能,可以通過下标檢視
* */
alert(arguments[0]);
alert(arguments[1]);
alert(arguments[2]);
alert("無慘函數fun");
for(var i=0;i<arguments.length;i++)
alert(arguments[i]);
}
fun(1,"ab",true);
//需求:編寫一個函數,用于計算所有參數相加的和并傳回
function Total() {
var sum=0;
for(var i=0;i<arguments.length;i++){
sum+=arguments[i];
}
return sum;
}
alert(Total(1,2,3,4,5,6,7,8,9));
</script>
</head>
<body>
</body>
</html>
8.Js中的自定義對象
8.1Object形式的自定義對象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 對象的定義:
// var 變量名 = new Object(); // 對象執行個體(空對象)
// 變量名.屬性名 = 值; // 定義一個屬性
// 變量名.函數名 = function(){} // 定義一個函數
var obj=new Object();
obj.name="令狐榮豪";
obj.age=18;
obj.fun=function(){
alert("姓名是:"+obj.name+"年齡是:"+obj.age);
alert("姓名是:"+this.name+"年齡是:"+this.age);
}
// 對象的通路:
// 變量名.屬性 / 函數名();
// alert( obj.age );
obj.fun();
</script>
</head>
<body>
</body>
</html>
8.2花括号形式的自定義對象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 對象的定義:
// var 變量名 = { // 空對象
// 屬性名:值, // 定義一個屬性
// 屬性名:值, // 定義一個屬性
// 函數名:function(){} // 定義一個函數
// };
var obj = {
name:"國哥",
age:18,
fun : function () {
alert("姓名:" + this.name + " , 年齡:" + this.age);
}
};
var oobj={
name:"令狐",
age:18,
fun:function () {
alert("姓名:"+oobj.name+"年齡:"+oobj.age);
}
}
// 對象的通路:
// 變量名.屬性 / 函數名();
alert(oobj.name);
oobj.fun();
</script>
</head>
<body>
</body>
</html>
9.javascript中的事件
- 事件是電腦輸入裝置與頁面進行互動的響應,我們稱為事件。
9.1常用的事件
-
加載完成事件【頁面加載完成後,常用作js代碼初始化操作】onload
-
單擊事件【常用于按鈕的點選響應操作】onclick
-
失去焦點事件【常用于輸入框失去焦點後驗證其輸入内容是否會丢失】onblur
-
内容發生改變事件【常用于下拉清單和輸入框内容發生改變後的操作】onchange
-
表單送出事件【常用于表單送出前,驗證所有表單項是否合法】onsubmit
9.2事件的注冊(綁定)
- 事件的注冊(綁定)就是告訴浏覽器,當事件
- 響應後要執行哪些操作代碼。
- 靜态注冊事件:通過html标簽的事件屬性直接賦予事件響應的代碼,這種方式我們叫靜态注冊事件。
- 動态注冊事件:是指先通過js代碼得到标簽的dom對象,然後再通過dom對象.事件名=function(){}這種形式賦予事件響應後的代碼,叫動态注冊。
動态注冊基本步驟:
1.擷取标簽對象
2.标簽對象.事件名
9.21 onload
事件
onload
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// onload事件的方法
function onloadFun(){
alert("靜态注冊onload事件")
}
// onload事件動态注冊。是固定寫法
window.onload=function () {
alert("動态注冊onload事件")
}
</script>
</head>
<!--靜态注冊onload事件
onload事件是浏覽器解析完頁面之後就會自動觸發的事件
<body onload="onloadFun();">
-->
<body onload="onloadFun()">
</body>
</html>
9.22 onclick
事件
onclick
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onclickFun() {
alert("靜态注冊事件");
}
//動态注冊事件
window.onload=function () {
//1.擷取标簽對象
/*
* 1.document:表示目前整個頁面,是JavaScript語言提供的一個對象(文檔)
* 2.get:擷取
* 3.Element:元素【标簽】
* 4.By:通過
* 5.Id:id屬性
* getElementById:通過id屬性擷取标簽元素,對象
* */
var btnObj=document.getElementById("btn1");
//btnObj就是一個對象
// 2.通過标簽對象.事件名=function(){}
btnObj.onclick=function () {
alert("動态注冊事件");
}
}
</script>
</head>
<body>
<!--靜态注冊事件-->
<button onclick="onclickFun()">按鈕1</button>
<!--動态注冊事件-->
<button id="btn1">按鈕2</button>
</body>
</html>
9.23 onblur
事件
onblur
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
//靜态注冊事件
function onblurFun() {
//console是控制台對象,是JavaScript語言提供的,專門用來x向浏覽器控制台列印輸出的,用于測試使用
//log是列印的方法
console.log("靜态失去焦點事件");
}
//動态注冊onblur事件
window.onload=function () {
//1.擷取标簽對象
var passwordObj=document.getElementById("password");
//2.通過标簽對象.事件名=function(){};
passwordObj.onblur=function () {
alert("動态焦點事件");
}
}
</script>
</head>
<body>
使用者名:<input type="text" onblur="onblurFun()"><br>
密碼:<input type="text" id="password"><br>
</body>
</html>
9.24 onchange
事件
onchange
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
function onchangeFun() {
alert("女神已經改變了");
}
window.onload=function () {
var onchangeObj=document.getElementById("onchangeFun");
onchangeObj.onchange=function () {
alert("女神已經改變了動态");
}
}
</script>
</head>
<body>
請選擇你心中的女神:
<!-- 靜态注冊change事件-->
<!-- <select onchange="onchangeFun()">-->
<select id="onchangeFun">
<option>---女神---</option>
<option>芳芳</option>
<option>佳佳</option>
<option>娘娘</option>
</select>
</body>
</html>
9.24 onsubmit
事件
onsubmit
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >//靜态系統資料庫單送出事件
function onsubmitFun() {
//要驗證所有表單是否合法,如果有一個不合法就阻止送出表單
alert("靜态系統資料庫單送出事件------發現不合法");
return false;
}
window.onload=function () {
var submitFunObj=document.getElementById("submitFun");
submitFunObj.onsubmit=function () {
alert("靜态系統資料庫單送出事件------發現不合法");
return false;
}
}</script>
</head>
<body>
<!--return false 可以阻止表單送出-->
<form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun()">
<input type="submit" value="靜态注冊">
</form>
<form action="http://localhost:8080" method="get" id="submitFun">
<input type="submit" value="動态注冊">
</form>
</body>
</html>
10.Dom模型
-
DOm
全稱是 Document Object Model文檔對象模型
大白話就是把文檔中的标簽對象,屬性,文本,轉換成對象來管理。
10.1Document對象中的方法介紹
-
document.getElementById(elementId)
通過标簽的id屬性查找标簽的dom對象,elementId是标簽的id屬性值
-
通過标簽的name屬性查找dom對象,elementName标簽的name屬性值doucument.getElementsByName(elementName)
-
document.getElementsByTagName(tagname)
-
方法,通過給定的标簽名建立一個标簽對象,tagname是建立的标簽名document.createElement(tagname)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >/*
* 需求:當使用者點選了校驗按鈕,要擷取輸出框裡的内容,然後驗證是否合法
* 驗證的規則是,必須有字母數字下劃線組成,并且長度在5-12位
* */
function onclickFun() {
//當我們需要操作一個标簽的餓時候,一定要先擷取這個标簽對象,
var usernameObj=document.getElementById("username");
// alert(usernameObj);
//[object HTMLInputElement]他就是dom對象
//dom對象就是标簽,儲存了标簽的所有資訊,是以你可以通路其屬性值
//alert(usernameObj.value);
//驗證字元串合不合法,需要利用正規表達式的規則
var usernameText=usernameObj.value;
var patt=/^\w{5,12}$/;//正規表達式的規則
/*
* test()方法用于測試某個字元串,是不是比對的規則
* 比對就傳回true,不比對就傳回false
* */
if(patt.test(usernameText)){
alert("使用者名合法");
}else {
alert("使用者名不合法");
}
}</script>
</head>
<body>
使用者名:<input type="text" id="username" value="wzg">
<button onclick="onclickFun()">校驗</button>
</body>
</html>
- 正規表達式:
10.2 檢測字元串中是否包含字母“e”------正規表達式對象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">//表示要求字元串中,是否包含字母e
//var patt=new RegExp("e");
var patt=/e/;//這個也是正規表達式對象
var str="abcd";
alert(patt.test(str));//不包含e是以列印出false</script>
</head>
<body>
</body>
</html>
10.3常用檢測
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">//表示要求字元串中,是否包含字母a或b或c
var patt=/[abc]/;
//表示要求字元串中,是否包含字母a到z
var patt=/[a-z]/;
//表示要求字元串中,是否包含字母A到Z
var patt=/[A-Z]/;
//表示要求字元串中,是否包含數字0到9
var patt=/[0-9]/;
///表示字元串是否包含字母數字下劃線
var patt=/\w/;
var str="abcd";
alert(patt.test(str));</script>
</head>
<body>
</body>
</html>
11.JavaScript兩種常見的驗證提示效果—getElementById方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >/*
* 需求:當使用者點選了校驗按鈕,要擷取輸出框裡的内容,然後驗證是否合法
* 驗證的規則是,必須有字母數字下劃線組成,并且長度在5-12位
* */
function onclickFun() {
//當我們需要操作一個标簽的餓時候,一定要先擷取這個标簽對象,
var usernameObj=document.getElementById("username");
// alert(usernameObj);
//[object HTMLInputElement]他就是dom對象
//dom對象就是标簽,儲存了标簽的所有資訊,是以你可以通路其屬性值
//alert(usernameObj.value);
//驗證字元串合不合法,需要利用正規表達式的規則
var usernameText=usernameObj.value;
var patt=/^\w{5,12}$/;//正規表達式的規則
/*
* test()方法用于測試某個字元串,是不是比對的規則
* 比對就傳回true,不比對就傳回false
* */
var usernameSpanObj=document.getElementById("usernameSpan");
usernameSpanObj.innerHTML="令狐你好";
if(patt.test(usernameText)){
alert("");
usernameSpanObj.innerHTML="使用者名合法";
}else {
usernameSpanObj.innerHTML="使用者名不合法";
alert("");
}
}</script>
</head>
<body>
使用者名:<input type="text" id="username" value="wzg">
<span id="usernameSpan"style="color: red;"></span>
<button onclick="onclickFun()">校驗</button>
</body>
</html>
11.1getElementsByName()方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">//全選
function checkAll() {
//讓所有複選框都選中
//document.getElementsByName();是根據指定的name屬性查詢傳回多個标簽對象集合
//這個集合的操作跟數組一樣
//集合中每個元素都是dom對象
var hobbys=document.getElementsByName("hobby");
//checked表示複選框選中的狀态,如果選中是true,不遜中是false
//這個屬性可讀可寫
//
// hobbys[2].checked=true;
for (var i=0;i<hobbys.length;i++){
hobbys[i].checked=true;
}
}
//全不選
function checkNo() {
//讓所有複選框都選中
//document.getElementsByName();是根據指定的name屬性查詢傳回多個标簽對象集合
//這個集合的操作跟數組一樣
//集合中每個元素都是dom對象
var hobbys=document.getElementsByName("hobby");
//checked表示複選框選中的狀态,如果選中是true,不遜中是false
//這個屬性可讀可寫
//
// hobbys[2].checked=true;
for (var i=0;i<hobbys.length;i++){
hobbys[i].checked=false;
}
}
//反選
function checkReverse() {
var hobbys=document.getElementsByName("hobby");
for (var i=0;i<hobbys.length;i++){
if (hobbys[i].checked===false)
hobbys[i].checked=true;
else
hobbys[i].checked=false;
}
}</script>
</head>
<body>
興趣愛好:
<input type="checkbox" name="hobby" value="cpp" checked="checked">C++
<input type="checkbox" name="hobby" value="java">java
<input type="checkbox" name="hobby" value="js">javascript
<br>
<button onclick="checkAll()">全選</button>
<button onclick="checkNo()">全不選</button>
<button onclick="checkReverse()">反選</button>
</body>
</html>
11.2getElementsByTagName()方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript">
// 全選
function checkAll() {
//document.getElementsByTagName("input")是按照指定标簽名來進行查詢并傳回集合
//這個集合的操作和數組一樣
//集合是dom對象
//集合中元素順序是他們在html頁面從上到下的順序
var inputs=document.getElementsByTagName("input");
for (var i=0;i<inputs.length;i++){
inputs[i].checked=true
}
}
</script>
</head>
<body>
<!--as -->
興趣愛好:
<input type="checkbox" value="cpp" checked="checked">C++
<input type="checkbox" value="java">Java
<input type="checkbox" value="js">JavaScript
<br/>
<button id="btn01" onclick="checkAll()">全選</button>
</body>
</html>
12.節點的常用屬性和方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom查詢</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">.onload = function(){//頁面加載之後的函數
//1.查找#bj節點
document.getElementById("btn01").onclick=function () {
var bjObj=document.getElementById("bj");
alert(bjObj.innerHTML);
};
//2.查找所有li節點
var btn02Ele = document.getElementById("btn02");
btn02Ele.onclick = function(){
var lis=document.getElementById("li");
alert(lis.length);
};
//3.查找name=gender的所有節點
var btn03Ele = document.getElementById("btn03");
btn03Ele.onclick = function(){
};
//4.查找#city下所有li節點
var btn04Ele = document.getElementById("btn04");
btn04Ele.onclick = function(){
};
//5.傳回#city的所有子節點
var btn05Ele = document.getElementById("btn05");
btn05Ele.onclick = function(){
};
//6.傳回#phone的第一個子節點
var btn06Ele = document.getElementById("btn06");
btn06Ele.onclick = function(){
};
//7.傳回#bj的父節點
var btn07Ele = document.getElementById("btn07");
btn07Ele.onclick = function(){
};
//8.傳回#android的前一個兄弟節點
var btn08Ele = document.getElementById("btn08");
btn08Ele.onclick = function(){
};
//9.讀取#username的value屬性值
var btn09Ele = document.getElementById("btn09");
btn09Ele.onclick = function(){
};
//10.設定#username的value屬性值
var btn10Ele = document.getElementById("btn10");
btn10Ele.onclick = function(){
};
//11.傳回#bj的文本值
var btn11Ele = document.getElementById("btn11");
btn11Ele.onclick = function(){
};
};</script>
</head>
<body>
<div id="total">
<div class="inner">
<p>
你喜歡哪個城市?
</p>
<ul id="city">
<li id="bj">北京</li>
<li>上海</li>
<li>東京</li>
<li>首爾</li>
</ul>
<br>
<br>
<p>
你喜歡哪款單機遊戲?
</p>
<ul id="game">
<li id="rl">紅警</li>
<li>實況</li>
<li>極品飛車</li>
<li>魔獸</li>
</ul>
<br />
<br />
<p>
你手機的作業系統是?
</p>
<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
</div>
<div class="inner">
gender:
<input type="radio" name="gender" value="male"/>
Male
<input type="radio" name="gender" value="female"/>
Female
<br>
<br>
name:
<input type="text" name="name" id="username" value="abcde"/>
</div>
</div>
<div id="btnList">
<div><button id="btn01">查找#bj節點</button></div>
<div><button id="btn02">查找所有li節點</button></div>
<div><button id="btn03">查找name=gender的所有節點</button></div>
<div><button id="btn04">查找#city下所有li節點</button></div>
<div><button id="btn05">傳回#city的所有子節點</button></div>
<div><button id="btn06">傳回#phone的第一個子節點</button></div>
<div><button id="btn07">傳回#bj的父節點</button></div>
<div><button id="btn08">傳回#android的前一個兄弟節點</button></div>
<div><button id="btn09">傳回#username的value屬性值</button></div>
<div><button id="btn10">設定#username的value屬性值</button></div>
<div><button id="btn11">傳回#bj的文本值</button></div>
</div>
</body>
</html>