JavaScriptjavascript
1、JS中event事件css
1.什麼是事件:html
事件是能夠被 JavaScript 偵測到的行爲java
網頁中的每一個元素均可以產生某些能夠觸發 JavaScript 函數的事件。比方說,咱們能夠在用戶點擊某按鈕時產生一個 onClick 事件來觸發某個函數node
事件一般與函數配合使用,這樣就能夠經過發生的事件來驅動函數執行。瀏覽器
<body onload="getTime()">app
<input type="button" value="提交" onclick="calc()"/>dom
<input type="button" value="暫停" onclick="pauseTime()"/>函數
<input type="button" value="繼續" onclick="continueTime()"/>學習
2.有哪些事件:
3.事件的觸發:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function demo1(){
console.log("個人demo1");
}
function demo2(){
console.log("鼠標移動");
}
function demo3(){
console.log("鍵盤彈起");
}
function demo4(){
console.log("內容改變");
}
function demo5(val){
console.log(val);
}
function demo6(){
console.log("頁面加載完成");
}
</script>
<style>
.div1{
width: 200px;
height: 200px;
border: 1px solid red;
}
</style>
</head>
<!--頁面加載完成執行的事件-->
<body onload="demo6()">
<!--單擊事件-->
<input type="button" name="" id="" value="測試一" onclick="demo1();demo2();demo3()" />
<!--雙擊事件-->
<input type="button" name="" id="" value="測試二" ondblclick="demo1()" />
<!--onmouseover:鼠標放上事件 onmouseout:鼠標移開事件-->
<div class="div1" onmousemove="demo2()" onmouseout="demo1()"></div>
<!--鍵盤事件 onkeydown:鍵盤按下 onkeyup:鍵盤彈起-->
<input type="text" onkeyup="demo3()" /> <br />
<!--onblur:失去焦點 onfocus:得到焦點 onchange:內容改變觸發事件 -->
<input type="text" onchange="demo4()" /> <br />
<!--傳遞this this表明自己的對象-->
<select onchange="demo5(this.value)">
<option value="1">中國1</option>
<option value="2">中國2</option>
<option value="3">中國3</option>
</select>
</body>
</html>
<!--
總結事件的通常使用狀況:
onclick、ondblclick、按鈕使用(按鈕是絕對不會結合onchange、onblur事件)
onchange、onkeydown、onkeyup onblur、onfocus、結合單行文本框和多行文本框
onchange:下拉框
onload:做用body
onmouseover、onmouseout、onmousemove:某些塊元素上結合使用
-->
2、JS中BOM對象
1.什麼是BOM:
BOM是Browser Object Model的簡寫,即瀏覽器對象模型。
BOM由一系列對象組成,是訪問、控制、修改瀏覽器的屬性的方法
BOM沒有統一的標準(每種客戶端均可以自定標準)。
BOM的頂層是window對象
2.什麼是DOM:
DOM是Document Object Model的簡寫,即文檔對象模型。
DOM用於XHTML、XML文檔的應用程序接口(API)。
DOM提供一種結構化的文檔描述方式,從而使HTML內容使用結構化的方式顯示。
DOM由一系列對象組成,是訪問、檢索、修改XHTML文檔內容與結構的標準方法。
DOM標準是由w3c制定與維護。DOM是跨平臺與跨語言的。
DOM的頂層是document對象
藍色框內是歸DOM管的,紅色框內歸BOM管的;也能夠說DOM也是歸BOM管的
BOM 是爲了操做瀏覽器出現的 API,window 是其根對象。
DOM 是爲了操做文檔出現的 API,document 是其根對象。
3、BOM
A、
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function demo1(){
/*彈框一 , 只是含有肯定按鈕*/
window.alert("外面還在下暴雨,今天咱們兩個分開了");
}
function demo2(){
/*彈框二,含有取消的彈框*/
var flag= window.confirm("是否刪除");
alert(flag);
}
function demo3(){
/*彈框三 ,含有輸入內容的彈框*/
var pr= window.prompt("請輸入暱稱","例如:李白");
//返回輸入的內容
alert(pr);
}
function getTime(){
var date=new Date();
//得到系統時間
var time =date.toLocaleString();
//得到span對象
var span =document.getElementById("span1");
//得到span中的內容對象
span.innerHTML=time;
}
/*js中的定時器*/
/*1s後執行方法的調用 ---調用一次*/
window.setTimeout("getTime()",1000);
/*每間隔1s就會調用方法 ---調用屢次*/
var ti= window.setInterval("getTime()",1000);
var ti1= window.setInterval("getTime1()",1000);
function stop1(){
//清除定時器的操做
window.clearInterval(ti);
}
function close1(){
//關閉當前的窗口
window.close();
//打開指定的窗口
window.open("http://www.baidu.com");
}
</script>
</head>
<body onload="getTime()">
當前的時間是:<span id="span1"></span>
<input type="button" value="中止計時" onclick="stop1()" /> <br />
<input type="button" name="" id="" value="關閉窗口" onclick="close1()" />
<hr/>
<input type="button" name="" id="" value="彈框一" onclick="demo1()" />
<input type="button" name="" id="" value="彈框二" onclick="demo2()" />
<input type="button" name="" id="" value="彈框三" onclick="demo3()" />
</body>
</html>
B、
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
/*location對象的學習*/
function demo1(){
//127.0.0.1:8020
var host=window.location.host;
//127.0.0.1
var hostname= window.location.hostname;
var urll=window.location.href;
//8020
var port=window.location.port;
//console.log(host+"--"+hostname+"---"+urll+"---"+port)
/**實現頁面的跳轉*/
// window.location.href="http://www.baidu.com";
//*從新加載網頁
window.location.reload();
}
/*History對象學習*/
function demo2(){
//返回瀏覽器歷史列表中的 URL 數量。
var len= window.history.length;
// console.log(len);
//前進按鈕
// window.history.forward();
//後退
// window.history.back();
//正數前進 負數:後退 0:刷新
window.history.go(0);
}
/*****Screen對象*******/
function demo3(){
var wi=window.screen.width;
var hi=window.screen.height;
console.log(wi+"---"+hi);
}
/****Navigator對象學習*******/
function demo4(){
//用戶代理對象
var us=window.navigator.userAgent;
console.log(us);
}
</script>
</head>
<body>
<input type="button" name="" id="" value="location對象學習" onclick="demo1()"/>
<input type="button" name="" id="" value="History對象學習" onclick="demo2()"/>
<input type="button" name="" id="" value="Screen對象學習" onclick="demo3()"/>
<input type="button" name="" id="" value="Navigator對象學習" onclick="demo4()"/>
</body>
</html>
4、DOM
1.什麼是DOM
2.DOM節點分類node
元素節點 element node <a href="連接地址">個人連接</a>
屬性節點 attribute node href="連接地址"
文本節點 text node 連接地址 個人連接
3.DOM節點關係
父子關係(parent-child):<html> 元素做爲父級,<head> 和 <body> 元素做爲子級
兄弟關係(Sibling):<a> 和 <h1> 元素就是兄弟關係;<title> 和 <h1> 元素並非兄弟關係
4.DOM操做的內容
1.查詢元素(進行操做元素、或者元素的屬性、文本)
2.操做文本
3.操做屬性
4.操做CSS樣式(一個特殊的屬性style)
5.操做元素
5、直接得到對象的方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
/*直接得到*/
function demo1(){
//得到id名稱是span1的節點對象--得到單個對象
var span = document.getElementById("span1");
alert(span);
}
function demo2(){
//根據標籤的名稱得到對象---得到的多個對象
var spans=document.getElementsByTagName("span");
//得到具體的某一個對象
alert(spans[2]);
}
function demo3(){
//經過class得到元素對象---得到的多個對象
var sp=document.getElementsByClassName("sp");
alert(sp.length);
}
function demo4(){
//經過name屬性得到元素的對象---得到的多個對象
var inp=document.getElementsByName("inp");
}
</script>
</head>
<body>
<input type="button" value="id得到節點對象" onclick="demo1()" />
<input type="button" value="ByTagName得到節點對象" onclick="demo2()" name="inp"/>
<input type="button" value="class得到節點對象" onclick="demo3()" name="inp"/>
<input type="button" value="Name得到節點對象" onclick="demo4()" name="inp"/>
<hr />
<span id="span1" ></span>
<span class="sp"></span>
<span class="sp"></span>
<span></span>
</body>
</html>
6、間接得到元素對象的方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function demo1(){
//得到div對象
var div=document.getElementById("div1");
//得到子節點--空白的文本也是一個節點
var chi= div.childNodes;
//只是得到span標籤
var sp= div.getElementsByTagName("span");
alert(sp.length);
}
function demo2(){
//得到span對象
var span =document.getElementById("span1");
//得到父節點元素
var div= span.parentNode;
alert(div);
}
function demo3(){
//得到指定的span標籤
var span=document.getElementById("span1");
//得到上一個節點 --包含空白文檔Text
//var sp= span.previousSibling;
//得到上一個節點 --不包含空白文檔Text
//var sp=span.previousElementSibling;
//得到下一個節點 --包含空白文檔Text
//var sp=span.nextSibling;
//得到下一個節點 --不包含空白文檔Text
var sp=span.nextElementSibling;
alert(sp);
}
</script>
</head>
<body>
<input type="button" name="" id="" value="得到子節點" onclick="demo1()" />
<input type="button" name="" id="" value="得到父節點" onclick="demo2()" />
<input type="button" name="" id="" value="得到兄弟點" onclick="demo3()" />
<hr />
<div id="div1">
<span>北京百度</span>
<span>北京百度</span>
<span id="span1">北京百度</span>
<span>北京百度</span>
</div>
</body>
</html>
7、DOM對象操做元素樣式&屬性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function demo1(){
//操做元素的節點屬性
var inp=document.getElementById("inp");
//得到元素的屬性
//alert(inp.type+"---"+inp.name+"---"+inp.value);
//改變元素的屬性
inp.type="button";
inp.value="測試一下";
}
function demo2(){
//操做元素的樣式
var div=document.getElementById("div1");
//得到樣式--只是支持行內樣式的書寫
var wi= div.style.width;
var he=div.style.height;
//alert(wi+"---"+he);
/*操做css方式一*/
/*div.style.width="300px"
div.style.height="400px";
div.style.backgroundColor="green";*/
/*操做css的方式二 --經過增長calss屬性添加樣式*/
div.className="di";
}
</script>
<style>
/*#div1{
width: 200px;
height: 200px;
border: 3px solid green;
}*/
.di{
width: 300px;
height: 300px;
background-color: pink;
}
</style>
</head>
<body>
<input type="button" name="" id="" value="屬性操做" onclick="demo1()" />
<input type="button" name="" id="" value="樣式操做" onclick="demo2()" />
<hr />
<input type="text" name="inp" id="inp" value="123" />
<div id="div1" style="width: 200px; height: 200px;border: 3px solid red;"></div>
</body>
</html>
8、JS操做元素的文本內容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function demo1(){
//得到div對象
var div =document.getElementById("div1");
//只是得到節點對象的內容,純文本的內容
//alert(div.innerText);
//得到節點的文本內容+html標籤
// alert(div.innerHTML);
//賦予對象節點的文本內容
// div.innerText="<b>baidu</b>";
//會識別HTML對應的代碼
// div.innerHTML="<b>baidu</b>";
//實現內容的累加
div.innerHTML+= "<b>baidu</b>";
}
function demo2(){
//得到input對象
var inp=document.getElementById("inp");
var val= inp.value;
alert(val);
}
function demo3(){
var sel=document.getElementById("sel");
//若是option選項沒有value屬性,得到的值是對應的文本內容
var val= sel.value;
alert(val);
}
function demo4(){
//得到多行文本框的對象
var tex=document.getElementById("tex");
alert(tex.value);
}
</script>
</head>
<body>
<input type="button" onclick="demo1()" value="測試節點的內容" />
<input type="button" name="" id="" value="得到節點的值" onclick="demo2()" />
<input type="button" name="" id="" value="得到多行文本的值" onclick="demo4()" />
<hr />
<div id="div1">
<span>
咱們都愛笑
</span>
</div>
<input type="text" id="inp" />
<hr />
<select onchange="demo3()" id="sel">
<option value="1">javaSE</option>
<option value="2">javaEE</option>
<option value="3">javaME</option>
</select>
<hr />
<textarea rows="20" cols="30" id="tex">123</textarea>
</body>
</html>
<!--
總結:
innerHTML,innerText ,value使用的情景
innerHTML,innerText:一般使用到雙標籤上
例外(select、textarea)得到值的時候也是用的value屬性
value:一般是單標籤 :input
-->
9、JS中DOM對象操做元素的節點
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function insertNode(){
//建立節點對象
var p = document.createElement("p");
p.innerHTML="照片:";
var inp1=document.createElement("input");
//操做節點對象的屬性
inp1.type="file";
var inp2=document.createElement("input");
inp2.type="button";
inp2.value="刪除";
inp2.onclick=function(){
//移除子節點的操做
/* p.removeChild(inp1);
p.removeChild(inp2);
document.body.removeChild(p);*/
//移除全部的節點
p.remove();
}
//指定元素的對應關係 appendChild:添加到現有元素對象以後
//document.body.appendChild(p);
//得到添指定元素對象
var p1=document.getElementById("p_1");
//在指定元素以前添加對象
document.body.insertBefore(p,p1);
p.appendChild(inp1);
p.appendChild(inp2);
}
//只會執行一個事件 ,,執行後者綁定的事件
window.onload=function(){
alert("頁面加載完成");
}
window.onload=function(){
alert("頁面加載完成2");
}
</script>
</head>
<body onload="demo1();demo2()">
<p>
姓名:<input type="" name="" id="" value="" />
</p>
<p>
照片:<input type="file" name="" id="" value="" />
<input type="button" name="" id="" value="添加" onclick="insertNode()" />
</p>
<p id="p_1">
<input type="button" name="" id="" value="提交" />
<input type="button" name="" id="" value="清空" />
</p>
</body>
</html>
<!--
節點操做的方法
document.createElement("標籤名");
父節點.appendChild(子節點);
父節點.insertBefore(新節點,指定以前的節點);
父節點.removeChild(子節點);
父節點.remove();
-->
10、JS中表單操做
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function checkName(){
//得到輸入的值
var val=document.getElementById("zh").value;
//得到span標籤對象
var span =document.getElementById("span_name");
if(val==""||val==null){
span.innerHTML="× 用戶名不能爲空";
span.style.color="red";
return false;
}else{
span.innerHTML="√ 用戶名合法";
span.style.color="green";
return true;
}
}
//判斷表單內容是否提交
function sub(){
var flag=checkName();
if(flag){
//進行表單數據的提交
document.fom.submit();
}
}
</script>
</head>
<body>
<form action="01JS中的事件學習.html" method="get" name="fom">
帳號:<input type="text" name="zh" id="zh" value="" onblur="checkName()" /><span id="span_name"></span> <br />
密碼:<input type="password" name="pwd" id="pwd" value=""/><br />
<input type="button" name="" id="" value="提交" onclick="sub()" />
</form>
</body>
</html>
<!--
readonly和disabled
共同點:是文本框不能夠更該內容
區別:readonly中對應的數據能夠提交到後臺
disabled中對應的數據是沒法提交到後臺
表單提交的形式:
[1]
* <input type="submit" name="" id="" value="提交" />
onsubmit="return checkName()"
[2]<input type="button" name="" id="" value="提交" onclick="sub()" />
document.fom.submit();
-->
11、JS實現打地鼠操做
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body{
background-image: url("img/bb.jpg");
background-repeat: no-repeat;
background-size: 1360px 700px;
}
table{
margin-top: 90px;
margin-left: 200px;
}
</style>
<script type="text/javascript">
var imgs;
//遊戲的時間是10s
var time=10;
var showI,stopT,leaT;
var count=0;
//遊戲開始
function begin(){
showI=window.setInterval("showImg()",1500);
//開始計時的操做
stopT=window.setInterval("stopTime()",1000);
}
//展現圖片
function showImg(){
//得到全部的img對象
imgs=document.getElementsByTagName("img");
//產生隨機的下標 0-24
var index=Math.floor(Math.random()*25);
imgs[index].src="img/01.jpg";
//間隔2s後調用地鼠的離開的操做
leaT=window.setTimeout("leaveImg("+index+")",2000);
}
//地鼠回去的操做
function leaveImg(ind){
imgs[ind].src="img/00.jpg";
}
//打擊地鼠的操做
function change(ts){
//點擊的圖片的路徑是01.jpg
//http://127.0.0.1:8020/05JS/img/00.jpg
// alert(ts.src);
var imgU= ts.src.substr(ts.src.length-6,6);
if(imgU=="01.jpg"){
ts.src="img/02.jpg";
count++;
}
}
//中止計時
function stopTime(){
if(time>0){
time--;
document.getElementById("div1").innerHTML=time;
}else {
gameOver();
}
}
//中止遊戲的操做
function gameOver(){
//清除全部的定時器
window.clearInterval(showI);
window.clearInterval(stopT);
window.clearTimeout(leaT);
//圖片迴歸以前的操做
for(var i in imgs){
imgs[i].src="img/00.jpg";
}
//統計結果
alert(count);
}
</script>
</head>
<body>
<div id="div1"></div>
<div>
<input type="button" name="" id="" value="開始" onclick="begin()"/>
<!--table>tr*5>td*5>img[src='' onclick='']-->
<table border="1px">
<tr>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
</tr>
<tr>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
</tr>
<tr>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
</tr>
<tr>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
</tr>
<tr>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
<td><img src="img/00.jpg" alt="" onclick="change(this)" /></td>
</tr>
</table>
</div>
</body>
</html>